Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поочередное открытие всех файлов директории в VBA / 6 сообщений из 6, страница 1 из 1
24.12.2005, 04:52:34
    #33455585
AK1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередное открытие всех файлов директории в VBA
Задача - открыть и поочередно обработать все файлы в директории
Вопрос 1:
Как будет звучать в VBA (или VB) аналог перловского (я примерно)
Код: plaintext
1.
2.
3.
4.
@qqq=readdir($dir);
foreach(@qqq)
   {
операция с файлом
   }
Вопрос 2:
это VBA, открываемые файлы - Вордовские. Смогу я сделать "Скопировать всё" (в ворде) и "вставить" (в Эксель)? Как это примерно может выглядеть?
Просто надо перекидать из ### файлов-таблиц в формате Ворда в Эксель, где потом их раделает имеющийся макрос (в ворде "скакать" по ячейкам не так сподручно, поэтому приходится немножко извращаться)?

Спасибо большое
...
Рейтинг: 0 / 0
24.12.2005, 09:08:16
    #33455641
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередное открытие всех файлов директории в VBA
примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Dim fso As New scripting.FileSystemObject
    Dim fld As scripting.Folder
    Dim fl As scripting.File
    Dim dicF As New scripting.Dictionary
    
    On Error GoTo EH

    ' Считываем каталог файлов для филиала
    Set fld = fso.GetFolder("Тута путь к директории")

    ' Определяем набор файлов
    For Each fl In fld.Files
       If fl.Type = "Документ Microsoft Word" Then
                'тута производим операцию с файлом
       End If
   Next

но может быть лучше проверять принадлежность файла по имени

так же посмотрите ф-цию
Код: plaintext
DIR
...
Рейтинг: 0 / 0
24.12.2005, 12:04:01
    #33455732
AK1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередное открытие всех файлов директории в VBA
Прежде всего, большое спасибо, но...

Код: plaintext
Dim fso As New scripting.FileSystemObject

в этом месте он пишет "Compile error: user-defined file not defined"
Как я понял, в VBA (или в данной версии) такого типа данных нет.

После некоторых мучений я сделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
With Application.FileSearch
    .NewSearch
    .LookIn = "c:\temp"
    .SearchSubFolders = False ' True
    .Filename = "*" + "." + "doc"
    .FileType = msoFileTypeAllFiles
    .Execute msoSortByFileName
    If .Execute >  0  Then
        For x =  1  To .FoundFiles.Count
 
      '  Сейчас произойдёт ошибка....
           Documents.Open Filename:=.FoundFiles(x)
      

           'делаю свои дела
        Next
    End If
End With

в выделенным месте происходит Debug Error Object required
Видимо, надо сделать переменную типа объект и как-то каждый раз присваивать ей значение открываемого файла... Не подскажете как?
Спасибо еще раз.
...
Рейтинг: 0 / 0
24.12.2005, 14:33:06
    #33455814
AK1234
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередное открытие всех файлов директории в VBA
еще идея:

там, как я понимаю, разные Application должны работать - сначала Ворд (открыть файл, скорпировать), потом - Эксель (вставить и обработать). а такое вообще возможно в ВБА?
...
Рейтинг: 0 / 0
24.12.2005, 15:22:12
    #33455848
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередное открытие всех файлов директории в VBA
AK1234

Код: plaintext
Dim fso As New scripting.FileSystemObject

в этом месте он пишет "Compile error: user-defined file not defined"
Как я понял, в VBA (или в данной версии) такого типа данных нет.


Чтобы это заработало надо в РЕФРЕНСЫ подключить Microsoft ScriptingRunTime

AK1234еще идея:

там, как я понимаю, разные Application должны работать - сначала Ворд (открыть файл, скорпировать), потом - Эксель (вставить и обработать). а такое вообще возможно в ВБА?

Можно в Басике оюъявить 2 переменные
Код: plaintext
1.
dim oExcell as Excell.Application
dim oWord as Word.Application

только не забудьте в РЕФРЕНСЫ подключить соответствующие библиотеки

если это в макросе Ворда или Экселя, то нужно будет объявить только одну переменную, в зависимости от того в чем Вы работаете (если в Ворде, то Эксель и наоборот)
...
Рейтинг: 0 / 0
26.12.2005, 09:32:18
    #33456719
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поочередное открытие всех файлов директории в VBA
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim strFile As String
    
    strFile = Dir(OuterPath)
    Do Until strFile = ""
        Debug.Print strFile
        strFile = Dir
    Loop
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поочередное открытие всех файлов директории в VBA / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]