Jos VBA menettely on kysyttävä käyttäjältä tiedostonimi, te voisi käyttää InputBox toimintoa ja anna Excel käyttäjä tehdä kirjoittamalla. Syöttöruutu ei kuitenkaan yleensä ole paras työkalu tähän työhön, koska useimpien käyttäjien on vaikea muistaa polkuja, kenoviivaa, tiedostonimiä ja tiedostopäätteitä. Toisin sanoen, se on aivan liian helppoa sotkea, kun kirjoitat tiedostonimeä.
Saat paremman ratkaisun tähän ongelmaan käyttämällä Application-objektin GetOpenFilename-menetelmää, joka varmistaa, että koodisi saa käsiinsä kelvollisen tiedostonimen, mukaan lukien sen koko polun. GetOpenFilename-menetelmä näyttää tutun Avaa-valintaikkunan (kuollut soittoääni valintaikkunalle, joka Excel näyttää, kun valitset Tiedosto → Avaa → Selaa).
GetOpenFilename-menetelmä ei itse asiassa avaa määritettyä tiedostoa. Tämä menetelmä yksinkertaisesti palauttaa käyttäjän valitseman tiedostonimen merkkijonona. Sitten voit kirjoittaa koodin tehdäksesi mitä haluat tiedostonimellä.
GetOpenFilename-menetelmän syntaksi
GetOpenFilename-menetelmän virallinen syntaksi on seuraava:
object.GetOpenFilename ([fileFilter], [filterIndex],
[title], [buttonText], [multiSelect])
GetOpenFilename-menetelmä ottaa alla valinnaiset argumentit.
Perustelu |
Mitä se tekee |
Tiedostosuodatin |
Määrittää valintaikkunassa
näkyvien tiedostojen tyypit (esimerkiksi *.TXT). Voit määrittää useita suodattimia, joista käyttäjä
voi valita. |
FilterIndex |
Määrittää, mitkä tiedostosuodattimet valintaikkunassa näkyvät
oletusarvoisesti. |
Otsikko |
Määrittää tekstin valintaikkunan otsikkoriville
. |
ButtonText |
Ohitettu (käytetään vain Excelin Macintosh-versiossa). |
Monivalinta |
Jos True, käyttäjä voi valita useita tiedostoja. |
GetOpenFilename-esimerkki
FileFilter-argumentti määrittää, mitä näkyy valintaikkunan Files of Type -pudotusvalikossa. Tämä argumentti koostuu tiedostosuodatinmerkkijonojen pareista, joita seuraa jokerimerkkitiedostosuodatinmääritykset, joista jokainen osa ja pari erotetaan pilkuilla. Jos se jätetään pois, tämän argumentin oletusarvo on seuraava:
Kaikki tiedostot (*.*), *.*
Huomaa, että tämä merkkijono koostuu kahdesta osasta, jotka on erotettu pilkulla:
Kaikki tiedostot (*.*)
ja
*.*
Tämän merkkijonon ensimmäinen osa on avattavassa Files of Type -luettelossa näkyvä teksti. Toinen osa määrittää, mitkä tiedostot valintaikkunassa näkyvät. Esimerkiksi *.* tarkoittaa kaikkia tiedostoja.
Seuraavan esimerkin koodi avaa valintaikkunan, joka pyytää käyttäjältä tiedostonimeä. Menettely määrittää viisi tiedostosuodatinta. Huomaa, että VBA-rivin jatkosekvenssiä käytetään suodatinmuuttujan asettamiseen; tämä yksinkertaistaa tätä melko monimutkaista argumenttia.
Sub GetImportFileName ()
Dim Finfo As String
Dim FilterIndex As Long
Himmeä otsikko merkkijonona
Himmeä tiedostonimi vaihtoehtona
' Määritä tiedostosuodattimien luettelo
Finfo = "Tekstitiedostot (*.txt),*.txt," & _
"Lotus Files (*.prn),*.prn" & _
"Pilkuilla erotetut tiedostot (*.csv),*.csv", & _
"ASCII-tiedostot (*.asc),*.asc", & _
"Kaikki tiedostot (*.*),*.*"
' Näytä *.* oletuksena
FilterIndex = 5
' Aseta valintaikkunan otsikko
Title = "Valitse tuotava tiedosto"
'Hae tiedostonimi
Tiedostonimi = Application.GetOpenFilename (FIinfo, _
FilterIndex, Title)
' Käsittele palautustietoja valintaikkunasta
Jos Tiedostonimi = False Sitten
MsgBox "Tiedostoa ei valittu."
Muu
MsgBox "Valitsit" & Tiedostonimi
Loppu Jos
Lopeta ala
Tässä on valintaikkuna, jonka Excel näyttää, kun suoritat tämän toimenpiteen. Ulkonäkö voi vaihdella käyttämäsi Windows-version ja määrittämiesi näyttöasetusten mukaan.
GetOpen Filename -menetelmä näyttää mukautettavan valintaikkunan ja palauttaa valitun tiedoston polun ja nimen. Se ei avaa tiedostoa.
Oikeassa sovelluksessa tekisit jotain merkityksellisempää tiedostonimellä. Voit esimerkiksi avata sen käyttämällä seuraavaa käskyä:
Työkirjat.Avaa Tiedostonimi
Huomaa, että FileName-muuttuja on ilmoitettu Variant-tietotyypiksi. Jos käyttäjä napsauttaa Peruuta, tämä muuttuja sisältää Boolen arvon (False). Muussa tapauksessa Tiedostonimi on merkkijono. Siksi Variant-tietotyypin käyttäminen käsittelee molemmat mahdollisuudet.