Ak váš postup VBA musí požiadať užívateľa na zadanie názvu súboru, ste mohli použiť funkciu InputBox a nechať užívateľa Excel urobiť nejaké písanie. Vstupné pole však zvyčajne nie je najlepším nástrojom na túto prácu, pretože pre väčšinu používateľov je ťažké zapamätať si cesty, spätné lomky, názvy súborov a prípony súborov. Inými slovami, pri písaní názvu súboru je až príliš ľahké sa pokaziť.
Pre lepšie riešenie tohto problému použite metódu GetOpenFilename objektu Application, ktorá zaistí, že váš kód dostane do rúk platný názov súboru vrátane jeho úplnej cesty. Metóda GetOpenFilename zobrazí známe dialógové okno Otvoriť (mŕtve zvonenie dialógového okna Excel zobrazí, keď vyberiete Súbor → Otvoriť → Prehľadávať).
Metóda GetOpenFilename v skutočnosti neotvorí zadaný súbor. Táto metóda jednoducho vráti užívateľom vybraný názov súboru ako reťazec. Potom môžete napísať kód, aby ste s názvom súboru urobili čokoľvek.
Syntax pre metódu GetOpenFilename
Oficiálna syntax metódy GetOpenFilename je nasledovná:
object.GetOpenFilename ([filter súboru], [filterIndex],
[title], [buttonText], [multiSelect])
Metóda GetOpenFilename preberá voliteľné argumenty nižšie.
Argumentovať |
Čo to robí |
FileFilter |
Určuje typy súborov, ktoré sa zobrazia v dialógovom okne
(napríklad *.TXT). Používateľ si môže
vybrať z niekoľkých filtrov . |
FilterIndex |
Určuje, ktorý zo súborových filtrov sa v
predvolenom nastavení zobrazí dialógové okno . |
Názov |
Určuje titulok pre záhlavie dialógového okna
. |
ButtonText |
Ignorované (používa sa len pre verziu Excelu pre Macintosh). |
MultiSelect |
Ak je pravda, používateľ môže vybrať viacero súborov. |
Príklad GetOpenFilename
Argument fileFilter určuje, čo sa zobrazí v rozbaľovacom zozname Súbory typu dialógového okna. Tento argument pozostáva z párov reťazcov filtra súborov, za ktorými nasleduje špecifikácia filtra súboru so zástupnými znakmi, pričom jednotlivé časti a páry oddeľujú čiarky. Ak je tento argument vynechaný, predvolene sa použije toto:
Všetky súbory (*.*), *.*
Všimnite si, že tento reťazec pozostáva z dvoch častí oddelených čiarkou:
Všetky súbory (*.*)
a
*.*
Prvá časť tohto reťazca je text zobrazený v rozbaľovacom zozname Súbory typu. Druhá časť určuje, ktoré súbory dialógové okno zobrazí. Napríklad *.* znamená všetky súbory.
Kód v nasledujúcom príklade otvorí dialógové okno, ktoré používateľa požiada o názov súboru. Postup definuje päť súborových filtrov. Všimnite si, že postupnosť pokračovania riadkov VBA sa používa na nastavenie premennej Filter; pomáha to zjednodušiť tento dosť komplikovaný argument.
Sub GetImportFileName ()
Dim Fininfo As String
Dim FilterIndex As Long
Dim Title As String
Dim FileName ako variant
' Nastavte zoznam filtrov súborov
FInfo = “Textové súbory (*.txt),*.txt,” & _
"Lotus Files (*.prn),*.prn," & _
„Súbory oddelené čiarkou (*.csv),*.csv“ & _
"Súbory ASCII (*.asc), *.asc," & _
"Všetky súbory (*.*),*.*"
' Štandardne zobraziť *.*
FilterIndex = 5
' Nastavte nadpis dialógového okna
Title = „Vyberte súbor na import“
' Získajte názov súboru
FileName = Application.GetOpenFilename (FInfo, _
FilterIndex, Title)
Spracovanie informácií o vrátení z dialógového okna
Ak FileName = False Then
MsgBox "Nebol vybratý žiadny súbor."
Inak
MsgBox „Vybrali ste“ a názov súboru
Koniec Ak
End Sub
Toto je dialógové okno, ktoré Excel zobrazí po vykonaní tohto postupu. Vzhľad sa môže líšiť v závislosti od verzie systému Windows, ktorú používate, a možností zobrazenia, ktoré ste nastavili.
Metóda GetOpen Filename zobrazí prispôsobiteľné dialógové okno a vráti cestu a názov vybratého súboru. Neotvorí súbor.
V skutočnej aplikácii by ste s názvom súboru urobili niečo zmysluplnejšie. Môžete ho napríklad otvoriť pomocou príkazu, ako je tento:
Workbooks.Open FileName
Všimnite si, že premenná FileName je deklarovaná ako typ údajov Variant. Ak používateľ klikne na tlačidlo Zrušiť, táto premenná obsahuje boolovskú hodnotu (False). V opačnom prípade je FileName reťazec. Preto použitie dátového typu Variant zvláda obe možnosti.