Обработать все файлы .xls в заданной папке (script)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 'НАЧАЛО ОПИСАНИЯ ' Этот скрипт используется в сочетании с файлом синтаксиса для обработки всех файлов типа xls ' в заданной папке. ' (достаточно просто изменить это решение так, чтобы обрабатывать и другие типы файлов) 'КОНЦЕ ОПИСАНИЯ 'ТРЕБОВАНИЯ ' Некоторая папка содержит множество файлов xls, которые должны быть обработаны с ' помощью синтаксиса, что находится в отдельном файле 'ДЕЙСТВИЯ СКРИПТА ' 1. Скрипт через диалог просит пользователя выбрать один из файлов xls ' 2. Это позволяет скрипту получить рабочий путь до нужной папки (этот путь сохраним в макросе "!indir") ' 3. Это позволит нам создать текстовый файл (с именем list.txt), содержащий перечень ' всех файлов xls в рабочей папке ' 5. Скрипт создаёт макрос !indir с путём к данной папке 'Автор: rlevesque@videotron.ca (размещено в SPSSX-L 05.07.2001) Option Explicit Sub Main() Dim Cmd$, strFullPath$, strPath$, strCommand$ Dim intPos As Integer ' Просим пользователя указать один из файлов xls, требующих обработки ' (это позволит получить путь к рабочей папке) strFullPath=GetFilePath(, "xls", ,"Пожалуйста, выберите один из файлов Excel", 0) ' Исключаем из пути само имя файла intPos = 1 While InStr(Mid(strFullPath,intPos),"\\")>0 intPos=intPos + InStr(Mid(strFullPath,intPos),"\\") Wend strPath=Left(strFullPath,intPos-1) ' Меняем рабочую директорию на ту папку, где содержатся файлы xls ChDir strPath ' Теперь создаём файл, который будет содержать перечень всех файлов xls в этой директории '============================================================================ 'Этот блок исправлен. Элегантный вариант получения списка файлов через командную 'строку не всегда хорошо работает с длинными именами файлов и именами с нелатинскими символами. 'Предложен более надёжный в данном случае вариант формирования списка. 'Соответственно исправлен блок команд в файле синтаксиса - А.Б. 'Shell("COMMAND.COM /c dir *.xls > list.txt",vbNormalFocus) Dim F As Variant F = Dir$("*.xls") Open strPath+"list.txt" For Output As #1 While F <> "" Print #1, F F = Dir$() Wend Close #1 '============================================================================= ' Определим макрос, содержащий путь к папке strCommand = "DEFINE !indir()" & "'" & strPath & "'" & "!ENDDEFINE." objSpssApp.ExecuteCommands strCommand, True End Sub |