VBA / VB6 - Mina dokument + Miljövariabler

Mappen "Mina dokument" innehåller en variabel användarnamnskomponent och ändras från en användare till en annan. Det är möjligt att skriva en kod i VBA eller VB6 för att komma åt mappen "Mina dokument" oavsett användarnamn, med hjälp av funktioner som kan läsa miljövariabler i VB6 . Som med alla programmeringsspråk kräver skrivkod i VB6 eller VBA kunskap om grundläggande programmeringskoncept, inklusive subrutiner, loopar och specifika VB6-funktioner. Miljöfunktioner som Environ $ som tar emot värdet av en miljövariabel kan användas för att skriva en kod för att läsa miljövariabler i VB6 .

Som visas i Utforskaren visas mappen Mina dokument för att vara i roten, men det är inte så. Den ligger i en underkatalog med C: \ Documents and Settings. Problemet är att denna underkatalog tar användarens namn och ändras inte bara från en dator till en annan, men också på datorer som stöder flera användare.

Följande koder låter dig komma åt mappen Mina dokument som standard oavsett vilken användare som är inloggad.

Med VBA

Klistra in följande kod i en allmän modul:

Alternativ Explicit

Privat typ SHITEMID

cb så länge

abid som byte

Sluttyp

Privat typ ITEMIDLIST

mkid som SHITEMID

Sluttyp

Privat Const CSIDL_PERSONAL As Long = & H5

Privat förklara funktion SHGetSpecialFolderLocation Lib "shell32.dll" _

(ByVal hwndOwner så länge, ByVal nFolder så länge _

pidl Som ITEMIDLIST) Så länge

Privat deklarera funktion SHGetPathFromIDList Lib "shell32.dll" Alias ​​"SHGetPathFromIDListA" _

ByVal pidl Så länge, ByVal pszPath Som sträng så länge

Offentlig funktion Rep_Documents () As String

Dim lRet As Long, IDL Som ITEMIDLIST, sPath As String

lRet = SHGetSpecialFolderLocation (100 & CSIDL_PERSONAL, IDL)

Om lRet = 0 Då

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

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

Rep_Documents = Vänster $ (sPath, InStr (sPath, Chr $ (0)) - 1)

Annan

Rep_Documents = vbNullString

Avsluta om

Slutfunktion

För att ringa upp funktionen, skapa en knapp och klistra in i följande kod:

Privat Sub CommandButton1_Click ()

Celler (5, 2) = Rep_Documents ()

Slutdel

Med VB6

Under VB6 använder du miljövariabeln UserProfile (det här fungerar också med VBA):

 Dimma sPathUser som sträng

sPathUser = Environ $ ("USERPROFILE") & "\ Mina dokument \"

MsgBox sPathUser

Miljöfunktioner

Environ $ -funktionen används för att ta emot värdet av en miljövariabel.

Om du till exempel använde WINDIR-kommandot (Windows), skulle du ha fått den mapp där Windows är installerat (C: \ Windows \).

Dessa variabler kan användas i batchfiler, genom Run-verktyget och i en programmeringsmiljö som VB och VBA.

  • Att skriva% UserProfile% refererar till den nuvarande användaren.
  • Skrivning% UserProfile% \ My Documents "refererar till mappen Mina dokument.
  • Skrivning% WinDir% får Windows-mappen.
  • Att skriva% tmp% ger dig tillgång till tillfälliga filer.

Windows-variabler

  • Variabler för standardanvändaren
    • TEMP-tillfällig katalog
    • TMP tillfällig katalog
  • Systemvariabler
    • ComSpec-variabelväg för kommandotolken.
    • FP_NO_HOST_CHECK?
    • NUMBER_OF_PROCESSORS?
    • OS returnerar operativsystem som används.
    • Väg?
    • PATHEXT?
    • PROCESSOR_ARCHITECTURE Returnerar processorarkitekturen (x86 etc ...)
    • PROCESSOR_IDENTIFIER Returnerar processorns ID.
    • PROCESSOR_LEVEL?
    • PROCESSOR_REVISION Returnerar antalet processorrevisioner
    • TEMP-tillfällig katalog.
    • TMP tillfällig katalog.
    • windir-mapp där Windows är installerat.
    • SystemRoot-mapp där Windows är installerat.

Anteckna det:

Om du är inloggad som administratör kan ändringarna göras via Kontrollpanel / Avancerat system / Miljövariabler.
Tidigare Artikel Nästa Artikel

Bästa Tipsen