2006-03-18 00:29 #0 av: johan

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:

Dialogruta för att välja filer och mappar med VBA och objektet FileDialog.

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:

  1. 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.
  2. Jag kan sätta en titel på dialogrutan och bestämma vilka filtyper som ska visas, t ex endast Excel-filer.
  3. Öppna dialogrutan och vänta på att användaren valt en fil.
  4. Kontrollera att man verkligen valt en fil
  5. 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