Страницы: 1
RSS
Win XP - тест возможности создания временного файла в папке Пользователя средствами VBA
 
Здравствуйте)

Я подыскиваю папку (каталог) для хранения временных .txt файлов (эти файлы будут создаваться и удаляться только на время выполнения процедуры).
Остановил выбор на папке Пользователя.
Почему?

Основная причина в том, что папка Пользователя разрешает создание файлов (!!!)
- по крайней мере в Win 8.1 (да, я люблю Win 8.1).

Этот факт (!!!) теперь мне нужно проверить в Win XP
- хотя бы ещё и потому что там совсем другая структура каталогов (я подглядывал здесь: https://habr.com/ru/post/70922/).
Код
Option Explicit
Private Sub Workbook_Open()

Const zQcQ1q As Double = 100000000000000#
Const zQcQ2q As Double = 999999999999999#

Dim zQ0q As String
Dim zQ1q As String
Dim zQFq As Variant
Dim zQsq As Variant
Set zQsq = CreateObject("WScript.Shell").SpecialFolders: zQ0q = _
    zQsq("MyDocuments")

Dim zQiq As Variant
Dim zQSplitq() As String
    zQSplitq = _
      Split(zQ0q, "\")
            zQ0q = "" '!!!

    For zQiq = 0 To UBound( _
    zQSplitq) - 1: zQ0q = zQ0q & _
    zQSplitq(zQiq) & "\"
    Next

    zQ1q = _
    zQ0q & Application.WorksheetFunction.RandBetween(zQcQ1q, zQcQ2q) & ".txt"
Set zQFq = CreateObject("Scripting.FileSystemObject").CreateTextFile( _
    zQ1q)

    For Each _
    zQsq In zQsq
    zQFq.WriteLine _
    zQsq
    Next: zQFq.Close '!!!

Shell "explorer.exe" & " " & zQ0q, vbNormalFocus
Shell "notepad.exe " & " " & zQ1q, vbNormalFocus
                        Kill zQ1q '!!!
Beep
End Sub

Что код делает:
  1. Находит SpecialFolders("MyDocuments") - которая примечательна тем, что во всех версиях винды она лежит прямо в папке Пользователя.
  2. Находит папку Пользователя - через Split по "\" и через "UBound - 1".
  3. Создаёт в папке Пользователя .txt файл со случайным именем.
  4. Записывает в этот .txt все возможные SpecialFolders.
  5. Открывает этот .txt и папку Пользователя через Shell.
  6. Удаляет этот .txt.
  7. Передаёт на секретную веб-страницу данные фашего паспорта и дебетовой карты (на самом деле нет)))
В общем, я вполне уверен, что папка Пользователя в Win XP тоже разрешает создание файлов. Но я буду признателен, если кто-то из владельцев хрюши здесь это подтвердит))
И ещё мне не помешает список "всех возможных SpecialFolders" (см. п. 4).

Заранее спасибо!
 
Уточните название темы по задаче ("тест записи" - куда-зачем; "SpecialFolders" - есть такое, и что?). Заменят модераторы
 
!! Уточняю название темы:
Win XP - тест возможности создания временного файла в папке Пользователя ср-вами VBA

Описание темы: Также интересует структура папок SpecialFolders в Win XP
 
Чем не устраивает стандартный windows temp folder?
Код
Environ("TEMP")
 
Oleg Boyaroff, я мало знаком с Environ; прочитал, будто она не всегда работает.
Искать UserFolder через "Ubound - 1" конечно тоже не универсальный метод))
Но если на всех версиях винды начиная с XP он сработает
- меня это устраивает!
 
Цитата
Environ; прочитал, будто она не всегда работает
всегда. проверено лично на десятках тысяч компов
это системная папка, с чего ей не работать-то

Цитата
не помешает список "всех возможных SpecialFolders"
так гуглится же за минуту
вот, например
http://scriptcoding.ru/2013/06/27/wscript-shell-specialfolders/

Цитата
тест возможности создания временного файла в папке Пользователя
можно и не тестировать, - всё будет работать
 
Тут надо от задачи плясать ибо каталоги пользователя могут быть
1. обычными, на диске С: или ином другом, как большинство привыкли .
2. Перемещаемые c профилем
3. Перенаправленные
например в последнем варианте предусматривается стандартно редирект 4х каталогов: Documents, Desktop, Download, Favorites. Надо ли временные файлы создавать на сервере, если хранить это в каталоге с документами - дело вкуса и потребности. А с роумингом, если не почистить, то будет барахло ездить туда сюда.

Я б тоже использовал  TEMP, но повторю, все от задачи.
По вопросам из тем форума, личку не читаю.
 
Ну раз Environ так поддерживают - буду рад работать с ним))
Спасибо! И за остальную информацию!

Цитата
Игорь написал:
вот, например http://scriptcoding.ru/2013/06/27/wscript-shell-specialfolders/
Не, я имел в виду полные пути самих дирректорий
- Win XP под руками нет, и мне была интересна именно структура папок.

Впрочем, я не учёл "редиректед"
- как подсказал тов. БМВ, так что наверное уже не важно)

Буду работать с Environ("TEMP") :)
Страницы: 1
Наверх