1

Тема: Просмотр папки с файлами

DIM myWord AS Word.Application
Set myWord = New Word.Application 'объявляем объект с именем ...
CALL SHELL("explorer D:\Рабочая папка\Пользователь\", vbNormalFocus) 'открыть папку с именем ...
Set myWord = Nothing

По этому скрипту открыли папку и если в ней напимер 50 файлов то как сделать Вид > Таблица, как???

Там ещё могут быть в Вид:
Эскизы страниц
Плитка
Значки
Список
Таблица

Как сделать Упорядочить значки > Изменён??

Там ещё могут быть в Упорядочить значки:
Имя
Размер
Тип
Изменён

2

Re: Просмотр папки с файлами

Вкратце, напрямую - Никак
эти настройки хранятся в реестре винды - помните преснопамятные настройки для каждой папки...
обходной путь - подстроить их для папки, которую вы собираетесь открыть...
начало пути:

внешняя ссылка
внешняя ссылка
внешняя ссылка

Если удастся докопаться - просьба дописать топик

Отредактировано VBA-addict (20.12.2010 13:48:33)

Делай, что можешь, и будь, что будет!

3

Re: Просмотр папки с файлами

Кстати, Эндрю, ваша реализация наводит на мысль, что вы, возможно движетесь не в том направлении...
зачем вам открытие в проводнике?

Гораздо удобнее использовать программно окно Открыть офиса, в котором вы можете задать массу параметров, недоступных вам через проводник...

Делай, что можешь, и будь, что будет!

4

Re: Просмотр папки с файлами

Dim myWord As Word.Application
Set myWord = New Word.Application 'объявляем объект с именем ...
Call Shell("explorer D:\Рабочая папка\Пользователь\", vbNormalFocus) 'открыть папку с именем ...
Set myWord = Nothing

    Dim winShell As Object
    Dim w As Object
    
    Set winShell = CreateObject("Shell.Application").Windows
    For Each w In winShell
        If w.LocationURL Like "file:///D:/Рабочая*" Then CallByName w.Document, "CurrentViewMode", VbLet, 3: Exit For
   Next
   
'FVM_ICON = 1
'FVM_SMALLICON = 2
'FVM_LIST = 3
'FVM_DETAILS = 4
'FVM_THUMBNAIL = 5
'FVM_TILE = 6
'FVM_THUMBSTRIP = 7
'FVM_CONTENT = 8

осталось два вопроса
1.
как чтобы отказаться от Like с
'"file:///D:/Рабочая%20папка/Пользователь"
переделать в
"D:\Рабочая папка\Пользователь\"
2.
сделать Вид > Таблица сделали!!!!!!
Как сделать Упорядочить значки > Изменён??
Там ещё могут быть в Упорядочить значки:
Имя
Размер
Тип
Изменён

5

Re: Просмотр папки с файлами

Гораздо удобнее использовать программно окно Открыть офиса, в котором вы можете задать массу параметров, недоступных вам через проводник...

Это окно же маленькое 1\4 экрана, а речь о например 50 файлах, неудобно смотреть, ОК??

6

Re: Просмотр папки с файлами

вот это поворот, я то думал, что
в строке
Then CallByName w.Document, "CurrentViewMode", VbLet, 8: Exit For

Например, 8 это будет показ FVM_CONTENT, но проверил, от 1 до 8 всё время показывает списком????????????
'FVM_ICON = 1
'FVM_SMALLICON = 2
'FVM_LIST = 3
'FVM_DETAILS = 4
'FVM_THUMBNAIL = 5
'FVM_TILE = 6
'FVM_THUMBSTRIP = 7
'FVM_CONTENT = 8

Что не так???????

7

Re: Просмотр папки с файлами

вот скрипт

Dim myWord As Word.Application
Set myWord = New Word.Application 'объявляем объект с именем ...
Папка = "D:\Рабочая папка\Пользователь\" 'открываем папку с именем ...
Call Shell("explorer " & Папка, vbNormalFocus)  'открыть папку с именем ...
Set myWord = Nothing

И = Replace$("D:\Рабочая папка\Пользователь\", "\", "/")
И1 = Replace$(И, " ", "%20")
Папка = "file:///" & Left$(И1, (Len(И1) - 1))

Dim winShell As Object
Dim w As Object
    
    Set winShell = CreateObject("Shell.Application").Windows
    For Each w In winShell
        Обрабатываемое_окно = w.LocationURL
        If w.LocationURL = Папка Then MsgBox "Зашло в условие": CallByName w.Document, "CurrentViewMode", VbLet, 2: Exit For
   Next

Проверял, когда VbLet, 1 и VbLet, 2
на строке
If w.LocationURL = Папка Then MsgBox "Зашло в условие": CallByName w.Document, "CurrentViewMode", VbLet, 1: Exit For

ошибка
Рун Тайм Эррор -2147417848(80010108)
Automation error
Вызванный объект был отключён от клиентов
И самое главное эта ошибка бывает не всегда, иногда её нет и иногда не заходит в последнее условие, так как не показывает
MsgBox "Зашло в условие", специально его поставил!!!!!

8

Re: Просмотр папки с файлами

Убрал МсгБокс, всё хорошо
Я понимаю, что Вам это не интересно проверять, но я 4 раза проверил лично, каждый раз менял
в строке CallByName w.Document, "CurrentViewMode", VbLet, 2
последнюю цифру и записывал на лист, какая константа как открывает папку, один раз записал так:
'FVM_ICON = 1 значки
'FVM_SMALLICON = 2 значки
'FVM_LIST = 3 список
'FVM_DETAILS = 4 таблица
'FVM_THUMBNAIL = 5 таблица
'FVM_TILE = 6 таблица
'FVM_THUMBSTRIP = 7 таблица
'FVM_CONTENT = 8 таблица
Без задней мысли второй раз проверил, всё уже по другому в том числе и появились
Эскизы страниц, Плитка, Просмотр диафильмов
А потом рискнул написать 9 и 10, ошибок не было, каждый раз открывало в каком то из режимов, где можно точно узнать об этом всём??
Можно ли и как папку сначала открывать невидимой, узнать открыв папку в каком она режиме просмотра открыта, изменить её до нужного и затем сделать видимой????

9

Re: Просмотр папки с файлами

сделал всё, кроме как ещё по усмотрению программировать опцию Упорядочить значки при просмотре папки, имеется ввиду например по Размеру?????
Даже не знаю с чего начинать????


по ссылке внешняя ссылка
Там Вордовский файл с кнопкой будет открывать папку С. В нутро кнопки если залезть можно менять Виды просмотра и размеры окна, но удовлетворения нет, глючное оно всё же, как и IE.
То ли дело строки программировать, вычесть, добавить без ошибок всегда

10

Re: Просмотр папки с файлами

Решил:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1 'сделать окно в режиме нормальный
Const SW_SHOWMINIMIZED = 2 'свернуть окно
Const SW_MAXIMIZE = 3 'сделать окно во весь экран
'___________________________________________________________________________
Private Sub CommandButton1_Click()
 
  Dim Папка As String
  Set objShell = CreateObject("Shell.Application")
  Папка = "D:\Рабочая папка\Нужное" 'не нужно в конце места нахождения папки ставить наклонную
  objShell.ShellExecute Папка & "\", , , , 0 'последняя цифра означает: 0 - скрытое окно
  Sleep 50 'нужна задержка, так как окно не успевает создаться
  For Each w In objShell.Windows
      If InStr(TypeName(w.Document), "ShellFolderView") > 0 Then
         If w.Document.Folder.self.Path = Папка Then
            w.Document.CurrentViewMode = 4
'последняя цифра означает:
'Значки 1
'Значки 2
'Список 3
'Таблица 4
'Эскизы страниц 5
'Плитка 6
'Просмотр диафильмов 7
'Значки 8
         ShowWindow w.hwnd, 3
'SW_SHOWNORMAL = 1 'сделать окно в режиме нормальный
'SW_SHOWMINIMIZED = 2 'свернуть окно
'SW_MAXIMIZE = 3 'сделать окно во весь экран
              Exit For
          End If
      End If
  Next
  Set objShell = Nothing
 
End Sub

Чтобы уже счастье было полным, помогите в этой частисделал всё, кроме того как ещё по усмотрению программировать опцию Упорядочить значки при просмотре папки, имеется ввиду например по Размеру?????
Всего там можно сортироать, по крайней мере в ХР по
Имя
Размер
Тип
Изменён
Даже не знаю с чего начинать????
Заранее спасибо