Kui teie VBA protseduuri vaja küsida kasutajalt failinime, siis võiks kasutada inputbox funktsiooni ja lase Excel kasutaja teha mõned sisestamist. Sisestuskast ei ole tavaliselt selle töö jaoks siiski parim tööriist, kuna enamikul kasutajatel on raske meelde jätta teid, kaldkriipse, failinimesid ja faililaiendeid. Teisisõnu, failinime kirjutamisel on liiga lihtne rikkuda.
Selle probleemi paremaks lahendamiseks kasutage rakenduse objekti meetodit GetOpenFilename, mis tagab, et teie kood saab kätte kehtiva failinime, sealhulgas selle täieliku tee. Meetod GetOpenFilename kuvab tuttava dialoogiboksi Ava (dialoogiboksi jaoks kuvatakse Exceli helin, kui valite Fail → Ava → Sirvi).
GetOpenFilename meetod ei ava tegelikult määratud faili. See meetod tagastab lihtsalt kasutaja valitud failinime stringina. Seejärel saate kirjutada koodi, et teha failinimega kõike, mida soovite.
GetOpenFilename meetodi süntaks
GetOpenFilename meetodi ametlik süntaks on järgmine:
object.GetOpenFilename ([fileFilter], [filterIndex],
[pealkiri], [buttonText], [mitme valik])
GetOpenFilename meetod kasutab allpool toodud valikulisi argumente.
Argument |
Mida see teeb |
Failifilter |
Määrab dialoogiboksis kuvatavate failide tüübid
(nt *.TXT). Saate määrata mitu filtrit, mille vahel kasutaja
saab valida. |
Filtriindeks |
Määrab, millised failifiltrid dialoogiboksis
vaikimisi kuvatakse . |
Pealkiri |
Määrab dialoogiboksi tiitliriba pealkirja
. |
Nuputekst |
Eiratud (kasutatakse ainult Exceli Macintoshi versiooni jaoks). |
MultiSelect |
Kui Tõene, saab kasutaja valida mitu faili. |
GetOpenFilename näide
Argument fileFilter määrab, mis kuvatakse dialoogiboksi ripploendis Files of Type. See argument koosneb failifiltri stringide paaridest, millele järgneb metamärgiga failifiltri spetsifikatsioon, kusjuures iga osa ja paari eraldavad komad. Kui see jäetakse välja, on selle argumendi vaikeväärtus järgmine:
Kõik failid (*.*), *.*
Pange tähele, et see string koosneb kahest osast, mis on eraldatud komaga:
Kõik failid (*.*)
ja
*.*
Selle stringi esimene osa on ripploendis Files of Type kuvatav tekst. Teine osa määrab, millised failid dialoogiboksis kuvatakse. Näiteks *.* tähendab kõiki faile.
Järgmises näites olev kood avab dialoogiboksi, mis küsib kasutajalt failinime. Protseduur määratleb viis failifiltrit. Pange tähele, et muutuja Filter seadistamiseks kasutatakse VBA rea jätkamise jada; see aitab seda üsna keerulist argumenti lihtsustada.
Sub GetImportFileName ()
Dim Finfo stringina
Dim FilterIndex As Long
Dim Pealkiri Stringina
Dim failinimi variandina
Failifiltrite loendi seadistamine
FIinfo = "Tekstifailid (*.txt),*.txt" & _
"Lotus Files (*.prn),*.prn" & _
„Komadega eraldatud failid (*.csv),*.csv” & _
"ASCII failid (*.asc),*.asc" & _
"Kõik failid (*.*),*.*"
Vaikimisi kuvatakse *.*
Filtriindeks = 5
' Määrake dialoogiboksi pealkiri
Pealkiri = "Valige imporditav fail"
"Hankige failinimi
FileName = Application.GetOpenFilename (FIinfo, _
Filtriindeks, pealkiri)
' Käsitlege tagastamisteavet dialoogiboksist
Kui failinimi = Väär, siis
MsgBox "Ühtegi faili pole valitud."
Muidu
MsgBox "Valisite " & failinimi
Lõpeta Kui
Lõpeta alam
Siin on dialoogiboks, mille Excel kuvab selle protseduuri teostamisel. Välimus võib varieeruda olenevalt kasutatavast Windowsi versioonist ja seadistatud kuvasuvanditest.
Meetod GetOpen Filename kuvab kohandatava dialoogiboksi ja tagastab valitud faili tee ja nime. See ei ava faili.
Päris rakenduses teeksite failinimega midagi tähendusrikkamat. Näiteks võite soovida selle avada, kasutades sellist avaldust:
Töövihikud.Ava failinimi
Pange tähele, et muutuja FileName on deklareeritud andmetüübina Variant. Kui kasutaja klõpsab nupul Tühista, sisaldab see muutuja tõeväärtust (False). Vastasel juhul on failinimi string. Seetõttu käsitleb andmetüübi Variant kasutamine mõlemat võimalust.