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

Спасибо большое
...
Рейтинг: 0 / 0
Поочередное открытие всех файлов директории в VBA
    #33455641
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так
Код: 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
Поочередное открытие всех файлов директории в VBA
    #33455732
AK1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прежде всего, большое спасибо, но...

Код: 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
Поочередное открытие всех файлов директории в VBA
    #33455814
AK1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще идея:

там, как я понимаю, разные Application должны работать - сначала Ворд (открыть файл, скорпировать), потом - Эксель (вставить и обработать). а такое вообще возможно в ВБА?
...
Рейтинг: 0 / 0
Поочередное открытие всех файлов директории в VBA
    #33455848
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поочередное открытие всех файлов директории в VBA
    #33456719
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поочередное открытие всех файлов директории в VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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