VBA FileDialog

Excel VBA FileDialog

In VBA is fieldialog een eigenschap die wordt gebruikt om verschillende instanties weer te geven, in filedialog zijn er vier verschillende soorten constanten die bekend staan ​​als msofiledialogfilepicker die wordt gebruikt om een ​​bestand uit een bepaald pad te selecteren, de tweede is msofiledialogfolderpicker waarvan de naam suggereert wordt gebruikt om te kiezen een map en de derde is msofiledialog open om een ​​bestand te openen en de laatste is msofiledialogsaveas die wordt gebruikt om een ​​bestand op te slaan als een nieuw bestand.

Er zijn bepaalde omstandigheden waarin we de gegevens uit een ander bestand of een ander werkblad willen hebben en aangezien VBA wordt gebruikt om ons werk te automatiseren, kunnen we verschillende andere bestanden openen met VBA en dit wordt gedaan door de Filedialog te gebruiken, het coole deel van het gebruik hiervan methode is dat we het pad naar de code niet hoeven op te geven, maar we vragen de gebruiker om door het bestand te bladeren.

Als onderdeel van het VBA-project kan het zijn dat we andere werkmappen moeten openen en er een soort taak mee moeten uitvoeren. In ons een van de eerdere artikelen "VBA Workbook.Open" hebben we laten zien hoe je bestanden opent met een gespecificeerd pad en een specifiek bestand. Daar moesten we het mappad en de bestandsnaam met de extensie opgeven. Maar wat als een gebruiker elke keer de verschillende bestanden uit de verschillende mappen moet selecteren? Dit is waar de optie "FileDialog" in beeld komt.

Hoe werkt VBA FileDialog Option?

"Als u het exacte pad niet weet, zal FileDialog het bestand voor u zoeken en selecteren". In plaats van het padadres en de bestandsnaam te vermelden, kunnen we een afzonderlijk dialoogvenster voor het openen van een bestand presenteren om het bestand uit een willekeurige map op de computer te selecteren.

U kunt deze VBA FileDialog Excel-sjabloon hier downloaden - VBA FileDialog Excel-sjabloon

"FileDialog" is een object in VBA. Om deze optie te gebruiken, moeten we de variabele eerst definiëren als FileDialog.

Zodra de variabele is gedeclareerd als "FileDialog", is het een objectvariabele. Om dit te gaan gebruiken, moeten we het object instellen met Application.FileDialog.

Zoals we in de bovenstaande afbeelding kunnen zien, heeft FileDialog er vier opties mee.

  • msoFileDialogFilePicker: Deze optie opent het bestandskiezer-venster voor de gebruiker om het gewenste bestand naar wens te selecteren.
  • msoFileDialogFolderPicker: Deze optie opent het dialoogvenster of venster voor de gebruiker om de map te selecteren.
  • msoFileDialogOpen: hiermee kan de gebruiker het geselecteerde bestand vanuit de map openen.
  • msoFileDialogSaveAs: Hierdoor kan de gebruiker het bestand opslaan als een andere kopie.

Vanaf nu heb ik de optie van msoFileDialogFilePicker geselecteerd .

Nu moeten we het dialoogvenster ontwerpen dat voor ons verschijnt.

Met behulp van With Statement kunnen we het dialoogvenster ontwerpen.

Plaats in de met de instructie een punt om de IntelliSense-lijst met de eigenschappen en methoden van de FileDialog-optie te zien.

Om alleen de Excel-bestanden te zien wanneer het bestandsdialoogvenster wordt geopend, moeten we eerst alle toegepaste filters verwijderen.

Nu moeten we een nieuw filter toepassen als "Excel-bestanden" met de wildcard-extensie van de Excel-bestanden.

Laten we nu de titel van het bestandsdialoogvenster wijzigen.

We kunnen de gebruiker toestaan ​​om slechts één bestand tegelijk te selecteren of we kunnen hem ook toestaan ​​om meerdere bestanden te selecteren. Hiervoor hebben we "Allow Multi-Select" nodig.

We hebben hier twee opties. Als TRUE is geselecteerd, kan de gebruiker meerdere bestanden selecteren als het de FALSE-gebruiker is die slechts één bestand tegelijk kan selecteren.

Een ander ding dat we kunnen ontwerpen met FileDialog is dat we kunnen aandringen op wat de standaardmap zou moeten zijn wanneer het bestandsdialoogvenster verschijnt. Gebruik hiervoor Initial File Name.

Hiervoor moeten we het adrespad van de standaardmap vermelden die moet worden geopend.

Nu moeten we eindelijk de "Show" -methode toepassen om het bestandsdialoogvenster te zien.

Code:

Sub DoEvents_Example1 () Dim Myfile As FileDialog Set Myfile = Application.FileDialog (msoFileDialogFilePicker) Met Myfile .Filters.Clear .Filters.Add "Excel-bestanden", "* .xlsx?", 1 .Title = "Kies uw Excel-bestand !! ! " .AllowMultiSelect = False .InitialFileName = "D: \ Excel Files". Show End With End Sub

Voer nu de VBA-code uit om het resultaat te zien.

Zoals we kunnen zien in het bovenstaande dialoogvenster met afbeeldingsbestanden, is de genoemde map standaard geopend.

Nu kunnen we elke submap selecteren en de Excel-bestanden selecteren.

Kijk naar de bovenstaande afbeelding, want we hebben de filterparameter alleen als "Excel-bestanden" toegepast.

Dit zal gewoon het bestand uit de genoemde map selecteren. Om het volledige pad op te slaan, moeten we nog een variabele declareren als een string.

Selecteer nu in de with-instructie “SelectedItems”. Wijs het pad van de geselecteerde itemmap toe aan de nieuw gedefinieerde variabele.

Toon nu eindelijk het geselecteerde mappad in het VBA-berichtvenster.

Nu zal ik het programma uitvoeren om het dialoogvenster te zien.

Nu heb ik de bestandsnaam geselecteerd als “1. Charts.xlsx ”in de submap“ Charts ”. Als ik op OK klik, zien we het volledige mappad in het berichtvenster.

Dus op deze manier kunnen we de FileDialog-optie gebruiken om de bestanden uit de map in Excel te selecteren. Gebruik onderstaande code om de bestanden te selecteren.

Code:

 Sub DoEvents_Example1() Dim Myfile As FileDialog Set Myfile = Application.FileDialog(msoFileDialogFilePicker) Dim FileAddress As String With Myfile .Filters.Clear .Filters.Add "Excel Files", "*.xlsx?", 1 .Title = "Choose Your Excel File!!!" .AllowMultiSelect = False .InitialFileName = "D:\Excel Files" .Show FileAddress = .SelectedItems(1) End With MsgBox FileAddress End Sub