Ef VBA aðferðin þín þarf að biðja notandann um skráarnafn, gætirðu notað InputBox aðgerðina og leyft Excel notandanum að slá inn. Inntaksbox er þó venjulega ekki besta tólið fyrir þetta starf, vegna þess að flestir notendur eiga erfitt með að muna slóðir, bakskástrik, skráarnöfn og skráarendingar. Með öðrum orðum, það er allt of auðvelt að klúðra því þegar þú skrifar inn skráarnafn.
Til að fá betri lausn á þessu vandamáli, notaðu GetOpenFilename aðferð forritshlutarins, sem tryggir að kóðinn þinn komist yfir gilt skráarnafn, þar á meðal heildar slóð hans. GetOpenFilename aðferðin sýnir kunnuglega Open svargluggann (dauður hringir fyrir gluggann Excel birtist þegar þú velur File → Open → Browse).
GetOpenFilename aðferðin opnar í raun ekki tilgreinda skrá. Þessi aðferð skilar einfaldlega notandavöldum skráarnafni sem streng. Síðan geturðu skrifað kóða til að gera hvað sem þú vilt með skráarnafninu.
Setningafræði fyrir GetOpenFilename aðferðina
Opinber setningafræði GetOpenFilename aðferðarinnar er sem hér segir:
object.GetOpenFilename ([fileFilter], [filterIndex],
[titill],[hnappurTexti], [multiSelect])
GetOpenFilename aðferðin tekur valfrjálsu rökin hér að neðan.
Rök |
Hvað það gerir |
FileFilter |
Ákvarðar tegundir skráa sem birtast í glugganum
(til dæmis *.TXT). Þú getur tilgreint nokkrar síur sem notandinn
getur valið úr. |
FilterIndex |
Ákveður hvaða af skráasíunum svarglugginn sýnir
sjálfgefið. |
Titill |
Tilgreinir yfirskriftina fyrir titilstiku svargluggans
. |
ButtonTexti |
Hunsuð (aðeins notað fyrir Macintosh útgáfu af Excel). |
Fjölval |
Ef satt, getur notandinn valið margar skrár. |
GetOpenFilename dæmi
FileFilter rökin ákvarða hvað birtist í fellilistanum Files of Type í svarglugganum. Þessi rifrildi samanstendur af pörum af skráasíustrengjum sem fylgt er eftir með algildisskráarsíuforskriftinni, með kommum sem aðskilja hvern hluta og par. Ef þeim er sleppt er þessi rök sjálfgefið eftirfarandi:
Allar skrár (*.*), *.*
Taktu eftir að þessi strengur samanstendur af tveimur hlutum, aðskilin með kommu:
Allar skrár (*.*)
og
*.*
Fyrsti hluti þessa strengs er textinn sem birtist í fellilistanum Skrár af gerð. Seinni hlutinn ákvarðar hvaða skrár svarglugginn sýnir. Til dæmis þýðir *.* allar skrár.
Kóðinn í eftirfarandi dæmi opnar svarglugga sem biður notandann um skráarnafn. Aðferðin skilgreinir fimm skráasíur. Taktu eftir að VBA línuframhaldsröðin er notuð til að setja upp síunarbreytuna; að gera það hjálpar til við að einfalda þessa frekar flóknu röksemdafærslu.
Undir GetImportFileName ()
Dim Finfo As String
Dimma FilterIndex As Long
Dimmt titill sem strengur
Dimma skráarnafn sem afbrigði
' Settu upp lista yfir skráasíur
FINfo = "Textaskrár (*.txt),*.txt," & _
„Lotus skrár (*.prn),*.prn,“ & _
„Kommaaðskildar skrár (*.csv),*.csv,“ & _
„ASCII skrár (*.asc),*.asc,“ & _
„Allar skrár (*.*),*.*“
' Birta *.* sjálfgefið
FilterIndex = 5
' Stilltu yfirskrift svargluggans
Titill = "Veldu skrá til að flytja inn"
' Fáðu skráarnafnið
FileName = Application.GetOpenFilename (FIinfo, _
FilterIndex, Titill)
' Meðhöndla skilaupplýsingar úr glugganum
Ef FileName = False Þá
MsgBox "Engin skrá var valin."
Annar
MsgBox “Þú valdir “ & FileName
End If
End Sub
Hér er svarglugginn sem Excel sýnir þegar þú framkvæmir þessa aðferð. Útlitið getur verið mismunandi, allt eftir útgáfu Windows sem þú notar og skjávalkostunum sem þú hefur stillt.
GetOpen Filename aðferðin sýnir sérhannaðar glugga og skilar slóð og nafni valinnar skráar. Það opnar ekki skrána.
Í alvöru forriti myndirðu gera eitthvað þýðingarmeira með skráarnafninu. Til dæmis gætirðu viljað opna það með því að nota yfirlýsingu eins og þessa:
Workbooks.Open FileName
Taktu eftir því að FileName breytan er lýst sem afbrigðisgagnategund. Ef notandinn smellir á Hætta við, þá inniheldur sú breyta Boolean gildi (False). Annars er FileName strengur. Þess vegna meðhöndlar notkun afbrigðisgagnategundar báða möguleikana.