VBA / VB6 - Saját dokumentumok + környezeti változók
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áncsPathUser = 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.