Dialogruta för att välja fil eller mapp med VBA
Den här artikeln beskriver hur du visar en dialogruta för att välja filer eller mappar i ditt VBA-projekt. Det bästa är att det är väldigt enkelt!
Formuläret
Till att börja har jag gjort ett formulär med knappar för att kunna välja fil och en knapp för att välja en mapp. Intill dessa har jag textrutor som ska visa vilken fil eller mapp jag valde. Så här set formuläret ut:
Textrutan vid "Välj fil" har jag döpt till txtFileName och knappen välj fil heter cmdPickFile. Motsvarande namn för att välja mapp är txtFolder och cmdPickFolder.
Händelsehanterare (event handlers)
Dubbelklicka på knappen "Välj fil" för att lägga till kod i händelsehanteraren för knappen. Det koden ska utföra är:
- Skapa ett objekt av typen FileDialog och specificera vilken typ av fildialogruta jag vill använda. Jag kan välja mellan en generell dialogruta för att bläddra efter namn, bläddra efter mapp, öppna fil eller spara som. Konstanten msoFileDialogFilePicker bestämmer att jag vill ha en helt vanlig dialogruta för att välja en fil.
- Jag kan sätta en titel på dialogrutan och bestämma vilka filtyper som ska visas, t ex endast Excel-filer.
- Öppna dialogrutan och vänta på att användaren valt en fil.
- Kontrollera att man verkligen valt en fil
- Spara undan filnamnet till textrutan
Följande kod gör detta åt mig:
Private Sub cmdPickFile_Click()
Dim oDialog As FileDialog
Set oDialog = Application.FileDialog(msoFileDialogFilePicker)
oDialog.Title = "Välj fil"
oDialog.Filters.Add "Excel-filer (*.xls)", "*.xls,*.xml"
oDialog.Filters.Add "Alla filer", "*.*"
oDialog.Show
If oDialog.SelectedItems.Count > 0 Then
txtFileName.Text = oDialog.SelectedItems(1)
End If
Set oDialog = Nothing
End Sub
För att välja en mapp istället för fil är det endast konstanten för vilken dialogrute-typ som skiljer. Denna är ni istället msoFileDialogFolderPicker. För mappar är det dessutom meningslöst att ange filter för filtyper som ska visas.
Flera användningsområden
Det finns en mängd användningsområden för när du vill kunna låta användaren vilja filer och mappar.
- Importera flera datafiler till en snygg Excel-rapport
- Behandla alla filer i en viss mapp
- Köra speciell kod innan en fil sparas
- Och mycket mer!
Av: johan
Datum för publicering
- 2006-03-17
Mvh // Johan
Född vid 334.00 PPM