VBA / VB6 - Мої документи + змінні середовища
![](http://img.brin-designs.com/img/games/513/vba-vb6-my-documents-environment-variables.png)
Як показано у провіднику 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.