Application.DefaultFilePath

goose323

Gebruiker
Lid geworden
23 apr 2024
Berichten
24
Ik wil graag de standaard path willen aanpassen zodat als ik een open commando geef hij naar een map gaat die ik van te voren al heb bepaald, en niet mijn standaar "mijn documenten" map.
Weet iemand hoe ik dat kan aapassen dmv een VBA code?
 
Geef eens de code die je nu gebruikt, want dit is een onhandige vraag. De DefaultFilePath is een map die je gebruikt juist als je documenten uit de standaardmap wilt ophalen. In elk ander geval kun je gewoon Path gebruiken in het FileOpen menu. Heb je dus niets met het Default path te maken.
 
Dit is nu het stukje wat in mijn programma staat, en die gaat dus standaard naar mijn documentenmap. Dat is een path die ik dus wil aanpassen

Code:
    Workbooks.Open Filename:=Application.GetOpenFilename(Title:="Selecteer het DATA bestand om te openen", FileFilter:="Excel xlsx *.xlsx (*.xlsx),")
        Cells.Select
            Selection.copy
            ActiveWindow.Close
    Windows(wbStart).Activate
        Sheets("data").Select
        Range("A1").Select
            ActiveSheet.Paste
                Application.WindowState = xlNormal
 
Maar wat wil je precies? Als je wilt kunnen bladeren naar een specifieke map om van daaruit een bestand te openen kun je beter een FileDialog gebruiken:
Code:
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Add "Excel", "*.xlsx; *.xlsm", 1
        .AllowMultiSelect = False
        If .Show = True Then Workbooks.Open Filename:=.SelectedItems(1)
    End With
Die je dan uiteraard nog kan finetunen.
 
Voor bijv. directory G:\OF\
Code:
With Application.FileDialog(3)
   .Initialfilename = "G:\OF\*.xls"
   If .Show = True Then Workbooks.Open .SelectedItems(1)
End With
 
Dat is wat ik dus juist niet wil, bladeren kan ik nu al met de huidige code, ik wil dat hij naar een specifieke map gaat waar het bestand staat die ik wil openen. De map staat best wel diep weggestopt, dus bladeren naar de juiste map kost gewoon teveel klikken
 
Of pas het hier eens aan:
1751890807224.png
 
Vergeet de tip van ed, want zoiets héb je al ingesteld, en dat wil je dus niet. De code van snb (waarvan ik hoopte dat je die zelf zou ontdekken, maar daar doet dit subforum niet aan ;)) doet verder precies wat jij wilt, áls je altijd in dezelfde map wilt starten. En met een (behoorlijk verouderd) xls bestand bovendien. De voorbeeldcode van snb moet je uiteraard wél aanpassen aan jouw eigen situatie, want die zal bij jou geheid niet werken. Bovendien werkt snb met een constructie met één niveau diep. Dat is natuurlijk heel simpel uit te breiden met de andere gewenste mappen.

Wil je dynamischer werken, dan zou ik ervoor kiezen om m.b.v. de aangereikte code (of je die van mij gebruikt, of die van snb maakt dan geen drol uit) bij eerste gebruik een map te kiezen, en die vervolgens in een publieke variabele te zetten. De tweede keer dat je een bestand opent, gebruik je dan die publieke variabele als uitgangspunt bij het openen.
En als je vervolgens een (serie) andere bestand(en) uit een andere map wilt openen, dan controleer je ook nog eens of de map is veranderd, en dan zet je de nieuwe map in de publieke variabele. Dan kun je heel flexibel werken, met elke keer andere mappen als uitgangspunt.
 
Je kunt in je hoofdbestand ergens in een cel je padspecificatie zetten en die gebruiken in je filedialog.
Bijvoorbeeld op Blad1 in cel A1:
Code:
Sub OpenDatabestand()
    With Application.FileDialog(msoFileDialogOpen)
        .Filters.Add "Excel", "*.xlsx; *.xlsm", 1
        .InitialFileName = Sheets("Blad1").Range("A1")
        .AllowMultiSelect = False
        If .Show Then Workbooks.Open Filename:=.SelectedItems(1)
    End With
End Sub
 
Terug
Bovenaan Onderaan