Ako vaš VBA postupak treba pitati korisnika za datoteke, što bi moglo koristiti funkciju InputBox i neka Excel korisnik napraviti neke tipkati. No, okvir za unos obično nije najbolji alat za ovaj posao, jer većina korisnika teško pamti staze, obrnute kose crte, nazive datoteka i ekstenzije datoteka. Drugim riječima, previše je lako zeznuti kada upisujete naziv datoteke.
Za bolje rješenje ovog problema upotrijebite metodu GetOpenFilename objekta Application, koja osigurava da vaš kod dobije valjani naziv datoteke, uključujući njezinu potpunu putanju. Metoda GetOpenFilename prikazuje poznati dijaloški okvir Otvaranje (prekid zvona za dijaloški okvir Excel se prikazuje kada odaberete Datoteka → Otvori → Pregledaj).
Metoda GetOpenFilename zapravo ne otvara navedenu datoteku. Ova metoda jednostavno vraća korisnički odabrani naziv datoteke kao niz. Zatim možete napisati kod kako biste učinili što god želite s imenom datoteke.
Sintaksa za metodu GetOpenFilename
Službena sintaksa metode GetOpenFilename je sljedeća:
object.GetOpenFilename ([filter file], [filterIndex],
[naslov], [buttonText], [više odabira])
GetOpenFilename metoda uzima neobavezne argumente u nastavku.
Argument |
Što to radi |
FileFilter |
Određuje vrste datoteka koje se pojavljuju u dijaloškom okviru
(na primjer, *.TXT). Možete odrediti nekoliko filtara koje korisnik
može odabrati. |
FilterIndex |
Određuje koji od filtera datoteka dijaloški okvir prikazuje prema
zadanim postavkama. |
Titula |
Određuje naslov za naslovnu
traku dijaloškog okvira . |
ButtonText |
Ignorirano (koristi se samo za Macintosh verziju Excela). |
MultiSelect |
Ako je istinito, korisnik može odabrati više datoteka. |
Primjer GetOpenFilename
Argument fileFilter određuje što se pojavljuje na padajućem popisu Files of Type dijaloškog okvira. Ovaj argument se sastoji od parova nizova filtera datoteka nakon kojih slijedi specifikacija filtera datoteke sa zamjenskim znakovima, sa zarezima koji odvajaju svaki dio i par. Ako se izostavi, ovaj argument je zadano na sljedeće:
Sve datoteke (*.*), *.*
Obratite pažnju da se ovaj niz sastoji od dva dijela, odvojena zarezom:
Sve datoteke (*.*)
i
*.*
Prvi dio ovog niza je tekst prikazan na padajućem popisu Files of Type. Drugi dio određuje koje datoteke dijaloški okvir prikazuje. Na primjer, *.* znači sve datoteke.
Kôd u sljedećem primjeru otvara dijaloški okvir koji od korisnika traži naziv datoteke. Postupak definira pet filtara datoteka. Primijetite da se sekvenca nastavka VBA reda koristi za postavljanje varijable Filter; to pomaže pojednostavniti ovaj prilično kompliciran argument.
Sub GetImportFileName ()
Dim Finfo As String
Dim FilterIndex As Long
Dim Title As String
Dim FileName kao varijanta
' Postavite popis filtara datoteka
FInfo = "Tekstualne datoteke (*.txt),*.txt" & _
"Lotus datoteke (*.prn),*.prn," & _
"Datoteke odvojene zarezima (*.csv),*.csv", & _
"ASCII datoteke (*.asc),*.asc," & _
"Sve datoteke (*.*),*.*"
' Prikaži *.* prema zadanim postavkama
Indeks filtra = 5
' Postavite naslov dijaloškog okvira
Naslov = "Odaberite datoteku za uvoz"
' Dobijte naziv datoteke
FileName = Application.GetOpenFilename (FInfo, _
Indeks filtera, naslov)
' Rukovati povratnim informacijama iz dijaloškog okvira
Ako je FileName = False Onda
MsgBox "Nijedna datoteka nije odabrana."
Drugo
MsgBox “Odabrali ste “ & Naziv datoteke
Završi ako
Kraj Sub
Ovo je dijaloški okvir koji Excel prikazuje kada izvršite ovaj postupak. Izgled se može razlikovati, ovisno o verziji sustava Windows koju koristite i opcijama prikaza koje ste postavili.
Metoda GetOpen Filename prikazuje prilagodljiv dijaloški okvir i vraća put i naziv odabrane datoteke. Ne otvara datoteku.
U pravoj aplikaciji, učinili biste nešto smislenije s nazivom datoteke. Na primjer, možda biste ga željeli otvoriti korištenjem izjave poput ove:
Radne knjige.Otvorite FileName
Primijetite da je varijabla FileName deklarirana kao tip podataka Variant. Ako korisnik klikne Odustani, ta varijabla sadrži Booleovu vrijednost (False). Inače, FileName je niz. Stoga korištenje tipa podataka Variant rješava obje mogućnosti.