Hei,
osaako kukaan sanoa onko VBA:ssa (Excel) toimintoa millä voi hakea jonkin tietyn kansion tiedostopolun?
Tiedoston nimen voin hakea Application.GetOpenFilename -toiminnolla ja avoinna olevan työkirjan tiedostopolun ActiveWorkbook.Path -komennolla, mutta entä kun haluan selville ja muuttujaan pelkän kansion tiedostopolun, sellaisenkin kansion jossa ei ole yhtään tiedostoa?
-Pasi-
En ole varma ymmärsinkö kysymyksesi oikein... Eli haluatko tarkistaa onko jokin tietty hakemisto olemassa, vai haluatko näyttää käyttäjälle jonkinlaisen valintaikkunan, josta tämä saa valita hakemiston?
Kumpaankaan vaihtoehtoon ei Excelissä ole helppoa tapaa.
Dir[(pathname, vbDirectory)] -komennon avulla pystyt hakemaan pathname-hakemistosta sen alihakemistot, jos niitä on. Joudut sitten tekemään jonkinlaisen tarkistuksen onko kyseinen palautettu tulos se hakemasi.
Public Sub Testi() Dim abu As String, Mista As String Application.ScreenUpdating = False 'pysäytetään hetkeksi ruudun päivitys Mista = ActiveCell.Address 'otetaan talteen mistä lähdettiin Range("A1").Activate abu = Dir("c:\windows\", vbDirectory) 'haetaan eka hakemisto Do While abu <> "" 'jos hakemisto löytyi, niin aloitetaan looppi 'ei välitetä "omasta" tai "isäntä" kansiosta If abu <> "." And abu <> ".." Then 'tarkistetaan, että kysessä on tosiaan hakemisto If (GetAttr("c:\windows\" & abu) And vbDirectory) = vbDirectory Then ActiveCell.Value = abu 'esitetään hakemiston nimi aktiivissa solussa ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'siirrytään rivi alaspäin End If End If abu = Dir 'haetaan uusi uhri Loop Range(Mista).Activate 'palataan sinne mistä lähdettiinkin 'palautetaan näytön päivitys, että nähdään mitä on tapahtunut Application.ScreenUpdating = True End Sub
Jos taas haluat näyttää sen valintaikkunan käyttäjälle, niin googlettamalla löytyi seuraavan lainen koodin poikanen (ensimmäinen tulos toim. huom.).
edit: typoja & muotoilua
Anteeksi kehno kysymyksenasettelu, tarkoitus tosiaan on näyttää käyttäjälle valintaikkuna josta voi valita jonkin tietyn kansion.
Antamasi linkin koodi toimii loistavasti, kiitos siitä :)
-Pasi-
Aihe on jo aika vanha, joten et voi enää vastata siihen.