Print side | Luk vindue

VBA Filedialog boks

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=3732
Udskrevet den: 23.Nov.2024 kl. 10:15


Emne: VBA Filedialog boks
Besked fra: mha
Emne: VBA Filedialog boks
Posteringsdato: 03.Jan.2019 kl. 09:31
Hej derude..

Først godt nytår...

Jeg sidder med en dialogboks, som forsøger at fortælle mig hvilken file (filnavn: Udtræk) jeg skal hente ind, men det giver bare ikke mening. Hvordan styre jeg det? Hvad er det for en property jeg skal kontrollere?



Jeg ser frem til at høre fra jer.

Mvh.
Martin



Svar:
Besked fra: Ib Hansen
Posteringsdato: 03.Jan.2019 kl. 09:46
Hej Martin.

Godt Nytår til dig også.

Hvis jeg skal være ærlig, har jeg ingen anelse om, hvad det er du laver.

Men for mig ser det ud til, du bare skal klikke på det filnavn oven over, du skal lave hente ind og så klikke på "Åben".

Hvis det ikke løser problemet er der til venstre for "Åben" en "Funktion", der kan klikkes på.
Måske kan det løse problemet.

Hvis intet af dette hjælper dig, ved jeg ikke hvad der skal gøres.

Mvh.
Ib


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)


Besked fra: maxzpad
Posteringsdato: 03.Jan.2019 kl. 09:49
Kan du prøve at poste den del af VBA-koden, der indeholder noget med Application.GetOpenFilename?


Besked fra: mha
Posteringsdato: 03.Jan.2019 kl. 09:52
Hej Ib og jer andre.

Du har fuldstændigt ret IB, at det kan man bare gøre, men udfordringen er at den foreslår en filenavn, som jeg gerne vil kunne styre.




Det ser mest professionel ud, hvis den blot er tom....

Hvilken property skal jeg kigge på?

Med venlig hilsen
Martin


Besked fra: maxzpad
Posteringsdato: 03.Jan.2019 kl. 09:57
Hvis det er VBA-kode, der kalder denne dialogboks, er jeg nødt til at se VBA-koden, før jeg kan skyde mig ind på det.


Besked fra: mha
Posteringsdato: 03.Jan.2019 kl. 10:13
Hej Maxzpad

hermed koden:

--------------------------

Function filedialog1(Label_box As String, Return_type As Byte, Dialog_filter As String, Start_position As String) As String

' Label_box er overskriften p? dialogboksen
' Return_type er dialog type vi ?nsker
' Dialog_filter er det filter vi s?tter op
' Start_position er vores mappe vi ?nsker at starte i

' koden her sender blot variablen tilbage - uanset om du v?lger case 1, 2, 3 eller 4

Dim MSO As Object ' styre filedialog type
Dim svar As String ' h?ndtere svar fra filedialogen

' vi s?ger blot at omdanne indholdet, skrives i sm? bogstaver
' s? vi ikke l?ngere nede f?r en fejl.
Dialog_filter = LCase(Dialog_filter)

' set dialog type
Select Case Return_type
    Case 3
        Set MSO = Application.filedialog(msoFileDialogOpen)
End Select

With MSO
    
    ' Der kan kun hentes en file af gangen
    .AllowMultiSelect = False
    
    If Return_type = 2 Or Return_type = 4 Then
            
        Debug.Print "---"
            
    Else
            
'------------------------------------------------
' I denne blog s?ttes filterne op i dialogboksen.
'------------------------------------------------
              
        'Nulsting af filteret
        .Filters.Clear

        '---------------------------------------
        'Filetyper til filteret
        '---------------------------------------

        ' Excel
        If InStr(1, Dialog_filter, "excel") <> 0 Then
            .Filters.Add "Excel files", "*.xls;*.xlsb;*.xlsm;*.xlsx;*.xlt;*.xltm;*.xltx;*.xlw;*.xml;*.xps;*.xla;*.xlam"
        End If
       
        'Vi s?tter filteret til standart i boksen
        .FilterIndex = 1
    
    End If
    
    'Start position hentes fra subrutinen
    .InitialFileName = Start_position
    
    'Titlen hentes fra subrutinen.
    .Title = Label_box
       
    'Kaster svaret fra dialogboksen ind i "svar" variablen. Er der trykket p? annulere, er svaret "Empty"
    If .Show = "-1" Then
        svar = .SelectedItems(1)
    Else
        svar = "Empty"
    End If
End With
    
' Her overf?res svaret fra dialogboksen til funktionen. Er "svar" tomt f?r de ogs? et tomt svar.
If svar <> "" Then

    filedialog1 = svar
    
End If

End Function

------------------------

her er de variabler som i brug når funktionen trækkes.



Mvh.
Martin



Besked fra: maxzpad
Posteringsdato: 03.Jan.2019 kl. 10:24
Ok. Du skal kigge på følgende linje i koden:

    'Start position hentes fra subrutinen
    .InitialFileName = Start_position

Du kan se, at Start_position = "Z:\Martin\Projekt 2 - Maria\Udtræk". Her skal du have en backslash på til sidst, dvs. "Z:\Martin\Projekt 2 - Maria\Udtræk\"


Besked fra: mha
Posteringsdato: 03.Jan.2019 kl. 10:40
Fedt...

det virker - hold da ferie, hvor kan det være "skrøbeligt"...




Besked fra: maxzpad
Posteringsdato: 03.Jan.2019 kl. 10:52
Ja, det virker lidt tosset, fordi der startes jo faktisk i den ønskede filmappe, selv om den ekstra backslash ikke er med, men det er åbenbart sådan, den (koden) arbejder med det.


Besked fra: Ib Hansen
Posteringsdato: 03.Jan.2019 kl. 11:06
Hej Martin.

Så blev jeg også klogere Confused

Husk at markerer Max's svar med Dette svar løste mit problem, så andre også kan se løsningen.
Du finder linket over Max's svar og når det er markeret, vil svaret hoppe op og stå lige under dit spørgsmål.

Wink


-------------
Excel 2010 Dk og 2019 Dk på samme computer.
Bruger dog stadig mest 2010..
Men sådan er der jo så majet :o)



Print side | Luk vindue