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 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.
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
|