VBA / VB6 - Мої документи + змінні середовища

Шлях до папки "Мої документи" містить змінну компонента імені користувача та змінюється від одного користувача до іншого. Можна написати код у VBA або VB6, щоб отримати доступ до папки "Мої документи" незалежно від імені користувача, за допомогою функцій, які можуть читати змінні середовища у VB6 . Як і для кожної мови програмування, написання коду у VB6 або VBA вимагає знання основних концепцій програмування, включаючи підпрограми, петлі та конкретні функції VB6. Функції середовища, такі як Environ $, які отримують значення змінної середовища, можуть використовуватися для запису коду для читання змінних середовища в VB6 .

Як показано у провіднику Windows, папка «Мої документи», здається, знаходиться в корені, але це не так. Він розташований у підкаталозі C: ​​Documents and Settings. Проблема полягає в тому, що цей підкаталог приймає ім'я користувача і змінюється не тільки з одного ПК на інший, але і на ПК, що підтримують декілька користувачів.

Наступні коди дозволяють отримати доступ до папки "Мої документи" за промовчанням незалежно від того, який користувач увійшов до системи.

З VBA

Просто вставте наступний код у загальний модуль:

Опція Явна

Приватний тип SHITEMID

cb Як довго

abID As Byte

Тип кінця

Приватний тип ITEMIDLIST

mkid як SHITEMID

Тип кінця

Приватні конститути CSIDL_PERSONAL As Long = & H5

Функція приватного оголошення SHGetSpecialFolderLocation Lib "shell32.dll" _

(ByVal hwndOwner як довго, ByVal nFolder як довго, _

pidl Як ITEMIDLIST) Як довго

Функція приватного оголошення SHGetPathFromIDList Lib "shell32.dll" Псевдонім "SHGetPathFromIDListA" _

ByVal pidl Як довго, ByVal pszPath як рядок довго

Публічна функція Rep_Documents () Як рядок

Dim lRet As Long, IDL як ITEMIDLIST, sPath As String

lRet = SHGetSpecialFolderLocation (100 &, CSIDL_PERSONAL, IDL)

Якщо lRet = 0 Тоді

sPath = Рядок $ (512, Chr $ (0))

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

Rep_Documents = Ліворуч $ (sPath, InStr (sPath, Chr $ (0)) - 1)

Ще

Rep_Documents = vbNullString

End If

Функція End

Щоб викликати функцію, просто створіть кнопку та вставте наступний код:

Приватна підпрограма CommandButton1_Click ()

Клітинки (5, 2) = Rep_Documents ()

End Sub

З VB6

У розділі VB6 використовуйте змінну середовища UserProfile (це також працює з VBA):

 Dim sPathUser як рядок

sPathUser = Environ $ ("USERPROFILE") & "мої документи" \ t

MsgBox sPathUser

Функції навколишнього середовища

Функція Environ $ використовується для отримання значення змінної середовища.

Наприклад, коли ви використовували команду WINDIR (Windows), ви б отримали папку, де інстальовано Windows (C: Windows).

Ці змінні можуть бути використані в пакетних файлах, через утиліту Run і в середовищі програмування, такі як VB і VBA.

  • Введення% UserProfile% посилається на поточного користувача.
  • Введення% UserProfile% My Documents - посилання на папку "Мої документи".
  • Введення% WinDir% отримує папку Windows.
  • Введення% tmp% надає доступ до тимчасових файлів.

Змінні Windows

  • Змінні для користувача за замовчуванням
    • Тимчасовий каталог TEMP
    • Тимчасовий каталог TMP
  • Системні змінні
    • Шлях змінної ComSpec для командного рядка.
    • FP_NO_HOST_CHECK?
    • NUMBER_OF_PROCESSORS?
    • OS повертає ОС, що використовується.
    • Шлях?
    • PATHEXT?
    • PROCESSOR_ARCHITECTURE Повертає архітектуру процесора (x86 і т.д. ...)
    • PROCESSOR_IDENTIFIER Повертає ідентифікатор процесора.
    • PROCESSOR_LEVEL?
    • PROCESSOR_REVISION Повертає кількість переглядів процесора
    • Тимчасовий каталог TEMP.
    • Тимчасовий каталог TMP.
    • папку windir, де встановлено Windows.
    • Папка SystemRoot, де інстальовано Windows.

Зауважте, що:

Якщо ви ввійшли в систему як адміністратор, зміни можна внести за допомогою панелі керування / додаткових системних / середовищних змінних.
Попередня Стаття Наступна Стаття

Кращі Поради