Здравствуйте)
Я подыскиваю папку (каталог) для хранения временных .txt файлов (эти файлы будут создаваться и удаляться только на время выполнения процедуры).
Остановил выбор на папке Пользователя.
Основная причина в том, что папка Пользователя разрешает создание файлов (!!!)
- по крайней мере в Win 8.1 (да, я люблю Win 8.1).
Этот факт (!!!) теперь мне нужно проверить в Win XP
- хотя бы ещё и потому что там совсем другая структура каталогов (я подглядывал здесь: ).
Что код делает:
И ещё мне не помешает список "всех возможных SpecialFolders" (см. п. 4).
Заранее спасибо!
Я подыскиваю папку (каталог) для хранения временных .txt файлов (эти файлы будут создаваться и удаляться только на время выполнения процедуры).
Остановил выбор на папке Пользователя.
Почему? |
|---|
| Загвоздка в том, что некоторые процедуры - подразумевают работу с .txt файлами не только в выбранном каталоге, но и всех его ПОДкаталогах (выбор осуществляется через диалог выбора каталога). Т.е., нужен такой каталог, в котором ничего интересного обычно не хранится (при выборе такого каталога предлагается обработка всех его подкаталогов; ну, или можно вернуться к диалогу и выбрать любые другие каталоги\подкаталоги вручную). Но это всё лирика)) |
Основная причина в том, что папка Пользователя разрешает создание файлов (!!!)
- по крайней мере в Win 8.1 (да, я люблю Win 8.1).
Этот факт (!!!) теперь мне нужно проверить в Win XP
- хотя бы ещё и потому что там совсем другая структура каталогов (я подглядывал здесь: ).
| Код |
|---|
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 |
Что код делает:
- Находит SpecialFolders("MyDocuments") - которая примечательна тем, что во всех версиях винды она лежит прямо в папке Пользователя.
- Находит папку Пользователя - через Split по "\" и через "UBound - 1".
- Создаёт в папке Пользователя .txt файл со случайным именем.
- Записывает в этот .txt все возможные SpecialFolders.
- Открывает этот .txt и папку Пользователя через Shell.
- Удаляет этот .txt.
- Передаёт на секретную веб-страницу данные фашего паспорта и дебетовой карты (на самом деле нет)))
И ещё мне не помешает список "всех возможных SpecialFolders" (см. п. 4).
Заранее спасибо!