Ja jūsu VBA procedūru nepieciešams lūgt lietotāju faila nosaukumu, jūs varētu izmantot InputBox funkciju un ļaut Excel lietotājs darīt kādu rakstīt. Tomēr ievades lodziņš parasti nav labākais rīks šim darbam, jo lielākajai daļai lietotāju ir grūti atcerēties ceļus, slīpsvītras, failu nosaukumus un failu paplašinājumus. Citiem vārdiem sakot, to ir pārāk viegli sabojāt, ierakstot faila nosaukumu.
Lai labāk atrisinātu šo problēmu, izmantojiet lietojumprogrammas objekta metodi GetOpenFilename, kas nodrošina, ka kods tiek izmantots derīgam faila nosaukumam, tostarp pilnam tā ceļam. Metode GetOpenFilename parāda pazīstamo dialoglodziņu Atvērt (dialoglodziņa Excel zvana signāls tiek parādīts, kad izvēlaties Fails → Atvērt → Pārlūkot).
GetOpenFilename metode faktiski neatver norādīto failu. Šī metode vienkārši atgriež lietotāja atlasīto faila nosaukumu kā virkni. Pēc tam varat rakstīt kodu, lai ar faila nosaukumu darītu visu, ko vēlaties.
Metodes GetOpenFilename sintakse
GetOpenFilename metodes oficiālā sintakse ir šāda:
object.GetOpenFilename ([fileFilter], [filterIndex],
[nosaukums], [buttonText], [multiSelect])
Metode GetOpenFilename izmanto tālāk norādītos neobligātos argumentus.
Arguments |
Ko tas dara |
Failu filtrs |
Nosaka dialoglodziņā redzamo failu tipus
(piemēram, *.TXT). Varat norādīt vairākus filtrus, no kuriem lietotājs
var izvēlēties. |
FilterIndex |
Nosaka, kurš no failu filtriem dialoglodziņā tiek rādīts pēc
noklusējuma. |
Nosaukums |
Norāda dialoglodziņa virsraksta
joslas parakstu . |
Pogas teksts |
Ignorēts (izmanto tikai Excel Macintosh versijai). |
MultiSelect |
Ja True, lietotājs var atlasīt vairākus failus. |
GetOpenFilename piemērs
Arguments fileFilter nosaka, kas tiek rādīts dialoglodziņa nolaižamajā sarakstā Files of Type. Šis arguments sastāv no failu filtru virkņu pāriem, kam seko aizstājējzīmes faila filtra specifikācija ar komatiem, kas atdala katru daļu un pāri. Ja tas tiek izlaists, šis arguments pēc noklusējuma ir šāds:
Visi faili (*.*), *.*
Ņemiet vērā, ka šī virkne sastāv no divām daļām, kas atdalītas ar komatu:
Visi faili (*.*)
un
*.*
Šīs virknes pirmā daļa ir teksts, kas tiek parādīts nolaižamajā sarakstā Files of Type. Otrā daļa nosaka, kuri faili tiek parādīti dialoglodziņā. Piemēram, *.* nozīmē visus failus.
Kods šajā piemērā atver dialoglodziņu, kurā lietotājam tiek prasīts faila nosaukums. Procedūra nosaka piecus failu filtrus. Ņemiet vērā, ka mainīgā filtra iestatīšanai tiek izmantota VBA rindas turpinājuma secība; tas palīdz vienkāršot šo diezgan sarežģīto argumentu.
Sub GetImportFileName ()
Dim Finfo As String
Dim FilterIndex As Long
Dim Title As String
Dim Faila nosaukums kā variants
Iestatiet failu filtru sarakstu
FIinfo = "Teksta faili (*.txt),*.txt" & _
“Lotus Files (*.prn),*.prn” & _
“Komatatdalītie faili (*.csv),*.csv” un _
“ASCII faili (*.asc),*.asc” un _
"Visi faili (*.*),*.*"
Pēc noklusējuma rādīt *.*
Filtra indekss = 5
Iestatiet dialoglodziņa parakstu
Title = “Atlasiet importējamo failu”
Iegūstiet faila nosaukumu
FileName = Application.GetOpenFilename (FIinfo, _
FilterIndex, Title)
Apstrādājiet atgriešanas informāciju no dialoglodziņa
Ja FileName = False, tad
MsgBox "Netika atlasīts neviens fails."
Citādi
MsgBox “Jūs atlasījāt “ & faila nosaukums
Beigas Ja
Beigu apakš
Šis ir dialoglodziņš, ko programma Excel parāda, izpildot šo procedūru. Izskats var atšķirties atkarībā no izmantotās Windows versijas un iestatītajām displeja opcijām.
GetOpen Filename metode parāda pielāgojamu dialoglodziņu un atgriež atlasītā faila ceļu un nosaukumu. Tas neatver failu.
Reālā lietojumprogrammā jūs darītu kaut ko jēgpilnāku ar faila nosaukumu. Piemēram, varat to atvērt, izmantojot šādu paziņojumu:
Workbooks.Open FileName
Ņemiet vērā, ka mainīgais FileName ir deklarēts kā datu tips Variants. Ja lietotājs noklikšķina uz Atcelt, šis mainīgais satur Būla vērtību (False). Pretējā gadījumā faila nosaukums ir virkne. Tāpēc, izmantojot datu tipu Variant, tiek izmantotas abas iespējas.