Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Tiedostopolku VBA:lla

Pasi [23.07.2004 06:07:38]

#

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-

BadSource [23.07.2004 07:43:06]

#

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

Pasi [23.07.2004 14:57:11]

#

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-

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta