VBA / VB6 - Saját dokumentumok + környezeti változók

A "Saját dokumentumok" mappa elérési útvonala tartalmaz egy változó felhasználónév-összetevőt és egy felhasználóról a másikra történő változásokat. A VBA-ban vagy a VB6-ban lehet kódot írni a "My Documents" mappához a felhasználónévtől függetlenül, a VB6 környezetváltozókat olvasó funkciók segítségével. Minden programozási nyelvhez hasonlóan a VB6 vagy VBA kódok írása a programozási alapismeretek ismeretét is magában foglalja, beleértve a szubrutinokat, a hurkok és a specifikus VB6 funkciókat. Környezeti funkciók, mint például az Environ, amely a környezeti változó értékét kapja, a VB6 környezet változóinak olvasásához kódot írhatnak.

Ahogy a Windows Intézőben látható, úgy tűnik, hogy a Saját dokumentumok mappa a gyökérben van, de ez nem így van. A C: dokumentumok és beállítások alkönyvtárában található. A probléma az, hogy ez az alkönyvtár a felhasználó nevét veszi, és nemcsak egy PC-ről egy másikra, hanem a több felhasználót támogató számítógépekre is megváltozik.

A következő kódok lehetővé teszik, hogy alapértelmezés szerint hozzáférjen a Saját dokumentumok mappához, függetlenül attól, hogy a felhasználó bejelentkezett.

VBA-val

Csak illessze be a következő kódot egy általános modulba:

Opció kifejezett

Privát típus SHITEMID

cb hosszú

abID Bájtként

Végtípus

Privát típus ITEMIDLIST

mkid Mint SHITEMID

Végtípus

Privát Const CSIDL_PERSONAL Hosszú = & H5

Privát bejelentés funkció SHGetSpecialFolderLocation Lib "shell32.dll" _

(ByVal hwndOwner olyan hosszú, byVal nFolder As Long, _

pidl As ITEMIDLIST) Hosszú

Privát bejelentési funkció SHGetPathFromIDList Lib "shell32.dll" Alias ​​"SHGetPathFromIDListA" _

ByVal pidl Amint hosszú, ByVal pszPath mint karakterlánc hosszú

Nyilvános funkció Rep_Documents () karakterláncként

Dim lRet Ha hosszú, IDL mint ITEMIDLIST, sPath mint karakterlánc

lRet = SHGetSpecialFolderLocation (100 &, CSIDL_PERSONAL, IDL)

Ha lRet = 0 Ezután

sPath = String $ (512, Chr (0))

lRet = SHGetPathFromIDList (ByVal IDL.mkid.cb, ByVal sPath)

Rep_Documents = Bal $ (sPath, InStr (sPath, Chr $ (0)) - 1)

Más

Rep_Documents = vbNullString

Vége Ha

Végfunkció

A funkció hívásához egyszerűen hozzon létre egy gombot és illessze be a következő kódot:

Privát Sub CommandButton1_Click ()

Cellák (5, 2) = Rep_Documents ()

Vége vége

VB6-mal

VB6 alatt használja a UserProfile környezeti változót (ez a VBA-val is működik):

 Dim sPathUser mint karakterlánc

sPathUser = Környezet $ ("USERPROFILE") & "Dokumentumok"

MsgBox sPathUser

Környezeti funkciók

Az Environ $ függvény egy környezeti változó értékének fogadására szolgál.

Például, ha a WINDIR parancsot (Windows) használta, akkor megkapta a mappát, ahol a Windows telepítve van (C: Windows).

Ezek a változók felhasználhatók kötegelt fájlokban, a Futtatás segédprogramban és egy olyan programozási környezetben, mint a VB és a VBA.

  • A% UserProfile% beírása az aktuális felhasználóra utal.
  • A% UserProfile% beírása A Dokumentumok hivatkozik a Saját dokumentumok mappára.
  • A% WinDir% beírása megkapja a Windows mappát.
  • A% tmp% beírása hozzáférést biztosít az ideiglenes fájlokhoz.

Windows változók

  • Az alapértelmezett felhasználó változói
    • TEMP ideiglenes könyvtár
    • TMP ideiglenes könyvtár
  • A rendszer változói
    • ComSpec változó elérési útja a parancssorhoz.
    • FP_NO_HOST_CHECK?
    • NUMBER_OF_PROCESSORS?
    • OS visszaküldi az operációs rendszert.
    • Pálya?
    • PATHEXT?
    • PROCESSOR_ARCHITECTURE A processzor architektúráját adja vissza (x86 stb.)
    • PROCESSOR_IDENTIFIER A processzorazonosítót adja vissza.
    • PROCESSOR_LEVEL?
    • PROCESSOR_REVISION A processzor-módosítások számát adja vissza
    • TEMP ideiglenes könyvtár.
    • TMP ideiglenes könyvtár.
    • windir mappa, ahol a Windows telepítve van.
    • SystemRoot mappa, ahol a Windows telepítve van.

Vegye figyelembe, hogy:

Ha rendszergazdaként jelentkezett be, a módosításokat a Vezérlőpult / Speciális rendszer / Környezeti változók segítségével lehet elvégezni.
Előző Cikk Következő Cikk

Top Tippek