VBA Как получить путь к папке данных приложения «Текущие пользователи»?

В целом,

Как с помощью VBA определить, где находится папка «Данные приложения текущих пользователей»?

Специальные папки FileSystemObjects знают только о 3 папках

  • Папка Windows
  • Системная папка
  • временная папка

В частности, мне нужен макрос Word для копирования файла в папку в папке Application Data.

например В VB.Net я могу использовать My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData для этого


person Binary Worrier    schedule 10.06.2009    source источник


Ответы (2)


Вы можете использовать Environ("AppData"), чтобы получить этот путь. Environ извлечет любую системную переменную, которую можно найти с помощью команды set в командной строке DOS.

person Eric    schedule 10.06.2009
comment
Я никогда не думал проверять строки Environment, это работает, спасибо :) - person Binary Worrier; 10.06.2009
comment
Я думаю, что подход Environ() ненадежен, поскольку переменные среды могут быть изменены пользователем и могут привести к неожиданным результатам. Использование Windows API может быть лучше. Вот пример поиска папки «Документы/Мои документы»: dailydoseofexcel.com/archives/2009/02/26/ Если вы можете найти способ сделать это для папки AppData, это может быть лучше. - person authentictech; 19.02.2014

Используя advapi32.dll, вы можете получить USERPROFILE через

Environ("USERPROFILE")

Соедините это с каталогом «Данные приложения» (у которого есть стандартное конкретное имя), чтобы получить то, что вы хотите.

CStr(Environ("USERPROFILE") & "\Application Data")

Для получения дополнительной информации посетите MSDN.

person Andrew Scagnelli    schedule 10.06.2009
comment
Альтернативой преобразованию в строку с CStr() является просто явный запрос типа данных строки с использованием символа типа $ перед выполнением - Environ$(). - person K.Dᴀᴠɪs; 19.03.2019