VBA FileDialog

Excel VBA FileDialog

I VBA fieldialog är en egenskap som används för att representera olika instanser, i filenialog finns det fyra olika typer av konstanter som är kända som msofiledialogfilepicker som används för att välja en fil från en given sökväg andra är msofiledialogfolderpicker vilket namn antyder används för att välja en mapp och den tredje är msofiledialog öppen för att öppna en fil och den sista är msofiledialogsaveas som används för att spara en fil som en ny fil.

Det finns vissa omständigheter där vi vill ha data från någon annan fil eller något annat kalkylblad och eftersom VBA används för att automatisera vårt arbete kan vi öppna olika andra filer med VBA och det görs med hjälp av Filedialog, den coola delen av att använda den här metoden är att vi inte behöver ange sökvägen till koden istället ber vi användaren att bläddra i filen.

Som en del av VBA-projektet kan vi behöva öppna andra arbetsböcker och utföra någon form av uppgift med dem. I vår en av den tidigare artikeln "VBA Workbook.Open" har vi visat hur man öppnar filer med angiven sökväg och specifik fil. Där behövde vi tillhandahålla mappvägen och filnamnet med dess tillägg. Men tänk om varje gång en användare måste välja de olika filerna från de olika mapparna. Det är här alternativet “FileDialog” kommer in i bilden.

Hur fungerar VBA FileDialog Option?

“Om du inte vet den exakta sökvägen kommer FileDialog att hitta och välja filen för dig”. Istället för att nämna sökadressen och filnamnet kan vi presentera ett filöppet dialogfönster separat för att välja filen från vilken mapp som helst på datorn.

Du kan ladda ner denna VBA FileDialog Excel-mall här - VBA FileDialog Excel-mall

”FileDialog” är ett objekt i VBA. För att först använda detta alternativ måste vi definiera variabeln som FileDialog.

När variabeln deklareras som ”FileDialog” är den en objektvariabel. För att börja använda detta måste vi ställa in objektet med Application.FileDialog.

Som vi kan se i bilden ovan har FileDialog fyra alternativ med den.

  • msoFileDialogFilePicker: Detta alternativ öppnar fönstret för filväljare framför användaren för att välja önskad fil enligt deras önskemål.
  • msoFileDialogFolderPicker: Detta alternativ öppnar dialogrutan eller fönstret framför användaren för att välja mapp.
  • msoFileDialogOpen: Detta låter användaren öppna den valda filen från mappen.
  • msoFileDialogSaveAs: Detta gör att användaren kan spara filen som en annan kopia.

Från och med nu har jag valt alternativet msoFileDialogFilePicker.

Nu måste vi utforma dialogrutan som visas framför oss.

Med With Statement kan vi utforma dialogrutan.

Inuti med uttalandet sätter du en punkt för att se IntelliSense-listan över egenskaper och metoder för FileDialog-alternativet.

För att bara se excel-filerna när dialogrutan för fil öppnas måste vi först ta bort något av de filter som används.

Nu måste vi tillämpa ett nytt filter som "Excel-filer" med jokerteckenförlängning av Excel-filerna.

Låt oss nu ändra titeln på fildialogrutan.

Vi kan tillåta användaren att bara välja en fil åt gången eller så kan vi också låta dem välja flera filer. För detta måste vi använda "Tillåt flerval".

Vi har två alternativ här. Om TRUE är valt kan användaren välja flera filer om det är FALSE-användaren kan bara välja en fil åt gången.

En annan sak vi kan utforma med FileDialog är att vi faktiskt kan insistera på vad som ska vara standardmapp när fildialogrutan visas. För detta använder du Initial File Name.

För detta måste vi nämna standardmappen som ska öppnas adressväg.

Nu måste vi äntligen använda metoden "Visa" för att se fildialogrutan.

Koda:

Sub DoEvents_Example1 () Dim Myfile As FileDialog Ställ in Myfile = Application.FileDialog (msoFileDialogFilePicker) With Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Välj din Excel-fil !! ! " .AllowMultiSelect = Falsk .InitialFileName = "D: \ Excel-filer". Visa slut med slut-sub

Kör nu VBA-koden för att se resultatet.

Som vi kan se i ovanstående bildfil har dialogrutan öppnat den nämnda mappen som standard.

Nu kan vi välja vilken undermapp som helst och välja excel-filer.

Titta på bilden ovan eftersom vi endast har tillämpat filterparametern som "Excel-filer".

Detta väljer bara filen från den nämnda mappen. För att lagra hela sökvägen måste vi deklarera en variabel till som en sträng.

Välj nu "SelectedItems" inuti med-uttalandet. Tilldela den valda artikelmappsökvägen till den nyligen definierade variabeln.

Visa äntligen den valda mappvägen i VBA-meddelanderutan.

Nu kommer jag att köra programmet för att se dialogrutan.

Nu har jag valt filnamnet som “1. Charts.xlsx ”i undermappen“ Charts ”. Om jag klickar på OK kan vi se hela mappvägen i meddelandefältet.

Så som detta kan vi använda alternativet FileDialog för att välja filerna från mappen i Excel. Använd koden nedan för att välja filerna.

Koda:

Sub DoEvents_Example1 () Dim Myfile As FileDialog Ställ in Myfile = Application.FileDialog (msoFileDialogFilePicker) Dim FileAddress As String With Myfile .Filters.Clear .Filters.Add "Excel Files", "* .xlsx?", 1 .Title = "Välj din Excel fil!!!" .AllowMultiSelect = Falsk .InitialFileName = "D: \ Excel-filer". Visa FileAddress = .SelectedItems (1) Avsluta med MsgBox FileAddress End Sub