Ha a VBA eljárásban meg kell kérni a felhasználótól a fájlnév, akkor lehetne használni a InputBox funkciót, és hagyja, hogy az Excel felhasználói némi gépelést. A beviteli mező azonban általában nem a legjobb eszköz ehhez a feladathoz, mivel a legtöbb felhasználó számára nehéz megjegyezni az elérési utakat, a fordított perjeleket, a fájlneveket és a fájlkiterjesztéseket. Más szóval, túl könnyű elrontani egy fájlnév beírását.
A probléma jobb megoldásához használja az Application objektum GetOpenFilename metódusát, amely biztosítja, hogy a kód érvényes fájlnévre kerüljön, beleértve a teljes elérési utat. A GetOpenFilename metódus az ismerős Megnyitás párbeszédpanelt jeleníti meg (az Excel párbeszédpanel halott csengőhangja, ha a Fájl → Megnyitás → Tallózás menüpontot választja).
A GetOpenFilename metódus valójában nem nyitja meg a megadott fájlt. Ez a módszer egyszerűen visszaadja a felhasználó által kiválasztott fájlnevet karakterláncként. Ezután írhat kódot, hogy azt csináljon a fájlnévvel, amit akar.
A GetOpenFilename metódus szintaxisa
A GetOpenFilename metódus hivatalos szintaxisa a következő:
object.GetOpenFilename ([fileFilter], [filterIndex],
[cím], [buttonText], [multiSelect])
A GetOpenFilename metódus az alábbi opcionális argumentumokat veszi fel.
Érv |
Mit csinál |
Fájlszűrő |
Meghatározza a párbeszédpanelen megjelenő fájlok típusát
(például *.TXT). Több szűrőt is megadhat,
amelyek közül a felhasználó választhat. |
FilterIndex |
Meghatározza, hogy a párbeszédpanel
alapértelmezés szerint melyik fájlszűrőt jelenítse meg . |
Cím |
Megadja a párbeszédpanel címsorának feliratát
. |
ButtonText |
Figyelmen kívül hagyva (csak az Excel Macintosh-verziójához használatos). |
Többszörös választás |
Ha igaz, a felhasználó több fájlt is kiválaszthat. |
A GetOpenFilename példa
A fileFilter argumentum határozza meg, hogy mi jelenjen meg a párbeszédpanel Files of Type legördülő listájában. Ez az argumentum fájlszűrő karakterlánc-párokból áll, amelyeket a helyettesítő karakteres fájlszűrő specifikáció követ, és vessző választja el az egyes részeket és párokat. Ha kihagyja, ez az argumentum alapértelmezés szerint a következő:
Minden fájl (*.*), *.*
Figyeljük meg, hogy ez a karakterlánc két részből áll, vesszővel elválasztva:
Minden fájl (*.*)
és
*.*
Ennek a karakterláncnak az első része a Files of Type legördülő listában megjelenő szöveg. A második rész határozza meg, hogy mely fájlok jelenjenek meg a párbeszédpanelen. Például a *.* az összes fájlt jelenti .
A következő példában szereplő kód megnyit egy párbeszédpanelt, amely fájlnevet kér a felhasználótól. Az eljárás öt fájlszűrőt határoz meg. Figyeljük meg, hogy a VBA sorfolytatási sorrendet használják a szűrőváltozó beállítására; ez segít leegyszerűsíteni ezt a meglehetősen bonyolult érvelést.
Sub GetImportFileName ()
Dim Finfo As String
Dim FilterIndex As Long
Dim Title As String
Dim FileName As Variant
Állítsa be a fájlszűrők listáját
FInfo = "Szöveges fájlok (*.txt),*.txt," & _
„Lotus Files (*.prn),*.prn” és _
„Vesszővel elválasztott fájlok (*.csv),*.csv”, és _
„ASCII fájlok (*.asc),*.asc” és _
"Minden fájl (*.*),*.*"
' Alapértelmezés szerint *.* megjelenítése
FilterIndex = 5
' Állítsa be a párbeszédpanel feliratát
Title = „Válasszon ki egy fájlt importálni”
' Szerezd meg a fájlnevet
FileName = Application.GetOpenFilename (FIinfo, _
FilterIndex, Title)
' A párbeszédpanel visszatérési információinak kezelése
Ha Fájlnév = False Akkor
MsgBox "Nincs fájl kiválasztva."
Más
MsgBox „Ön kiválasztotta a „ & Fájlnév
Vége Ha
Vége Sub
Ez az a párbeszédpanel, amelyet az Excel az eljárás végrehajtásakor jelenít meg. A megjelenés a Windows használt verziójától és a beállított megjelenítési beállításoktól függően változhat.
A GetOpen Filename metódus egy testreszabható párbeszédpanelt jelenít meg, és visszaadja a kiválasztott fájl elérési útját és nevét. Nem nyitja meg a fájlt.
Egy valós alkalmazásban valami értelmesebbet tenne a fájlnévvel. Például érdemes lehet megnyitni egy ilyen utasítás használatával:
Workbooks.Open FileName
Figyelje meg, hogy a FileName változó Variant adattípusként van deklarálva. Ha a felhasználó a Mégse gombra kattint, akkor ez a változó logikai értéket (hamis) tartalmaz. Ellenkező esetben a Fájlnév egy karakterlánc. Ezért a Variant adattípus használata mindkét lehetőséget kezeli.