Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Hakemistojen luonti

Sivun loppuun

Wizard [06.01.2004 16:19:03]

#

Tarve olisi luoda hakemisto ILMAN, että tarvitsee käyttää shelliä. Eli siis suoraan VB koodista tietyn niminen hakemisto. Samalla pitäisi testata (, jos tarpeen), että onko hakemisto jo olemassa vai luodaanko se.

Sitten samaan syssyyn toinen mieltä askarruttava asia, että kuin luen Wintoosan system hakemiston suoraan koodista ja palautan sen muuttujaan? Kun se voi olla joko \Winnt\system tai \Windows\System.

tejeez [06.01.2004 16:27:31]

#

En ole varma toimiiko VB:ssä, mutta pitäisi toimia ehkä
Mkdir "plaaplaa"

Blaze [06.01.2004 16:58:29]

#

lainaus:

Sitten samaan syssyyn toinen mieltä askarruttava asia, että kuin luen Wintoosan system hakemiston suoraan koodista ja palautan sen muuttujaan?

http://www.pietschsoft.com/programming/vbapi/ref/g/getsystemdirectory.html

lainaus:

Kun se voi olla joko \Winnt\system tai \Windows\System.

Tai \dfgsdfg\system

Teme [06.01.2004 17:01:09]

#

Juu, juuri noin.

Dim Hak As String
Hak = "C:\Testikansio"

MkDir Hak

Koitin tehdä sellaista, mikä tarkistaa hakemiston olemassaolon, mutta VB ei tykännyt koodistani :P

Sitten, Windowsin System32-hakemiston selvitys menee näin:

WinApi-käsky:

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

Koodi:

Dim Temp As String * 256, SysHak As String
GetSystemDirectory Temp, 256 'Pyydetään hakemistopolkua
SysHak = Left(Temp, InStr(Temp, Chr(0)) - 1) 'Erotellaan se

MsgBox SysHak 'Näytetään muuttujan sisältämä teksti (hakemistopolku)

Antti Laaksonen [06.01.2004 20:25:36]

#

Hakemiston tarkistaminen:

    Dim nimi As String
    On Error GoTo eiole
    nimi = Dir("c:\uusi\", vbDirectory)
    If nimi <> "" Then
        If GetAttr(nimi) = vbDirectory Then
            MsgBox "Hakemisto on olemassa!"
        End If
    End If
eiole:

Wizard [11.01.2004 19:00:25]

#

Ei toimi tuo hakemiston tarkistaminen???

sooda [11.01.2004 19:11:52]

#

jos muokkaisi tosta c:\uusi\ -> c:\uusi niin varmaankin toimisi.

Wizard [11.01.2004 19:21:28]

#

Löysin toimivan yhden rivin ratkaisun:

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

MakeSureDirectoryPathExists ("C:\Testi_kansio\")

sooda [11.01.2004 19:27:51]

#

Hehhee, onpas functio... mistä sä ton löysit kun on tollaisessa kummadll:ssä(imagehlp?????)

Wizard [11.01.2004 19:53:58]

#

http://www.visualbasicforum.com/showthread.php?t­=92746&highlight=path exist

Toimii muuten todella hyvin. Ja luo hakemisto moneen tasoon tarvittaessa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta