|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] CMD/BAT - Скрипт, который считывает количество данных из разных таблиц Excel |
|
|
CMD/BAT - [решено] CMD/BAT - Скрипт, который считывает количество данных из разных таблиц Excel
|
Пользователь Сообщения: 72 |
Добрый день. Вот такая задачка. Имеются несколько десятков excel файлов с разными именами 34S_1 - 999999_19.04.2018_14.xls, 34S_400000 - 400138_19.04.2018_1.xls, 34S_400139 - 404622_19.04.2018_9.xls например. В каждой из этих таблиц имеются данные ( индекса городов ) Можно ли сделать так чтобы при запуске скрипта выводилось сообщение - Введите индекс и после ввода индекса выводилось количество данных с этим индексом со всех xls файлов? Думаю имена файлов xls неважно? Достаточно просто с:/путь/*.xls указать
|
|
Отправлено: 14:04, 19-04-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата romfus:
Цитата romfus:
Цитата romfus:
|
|||
Отправлено: 14:08, 19-04-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Вот пример одного файла, структура у них у всех одинакова. Так да, перебираем все рабочие книги. Посмотрите пример файла, думаете поймете о чем я. В файле много индексов. вводим один индекс и скрипт считывает сколько раз этот индекс повторился в книге и выдает количество
|
Отправлено: 14:15, 19-04-2018 | #3 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать вот 2 файл для примера
|
Отправлено: 14:23, 19-04-2018 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата romfus:
Цитата romfus:
Ну, вот как-то так я себе это представляю (на WSH): Скрытый текст
Option Explicit Const adOpenStatic = 3 Const adLockOptimistic = 3 Const adCmdText = 1 Dim strSourceFolder Dim strPostCode Dim objFSO Dim objFile Dim objConnection Dim objCatalog Dim objTable Dim objRecordset Dim intTotalOccuped If WScript.Arguments.Count = 1 Then strSourceFolder = WScript.Arguments.Item(0) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strSourceFolder) Then strPostCode = "123456" strPostCode = InputBox("Введите почтовый индекс:", "Введите почтовый индекс", strPostCode) Set objConnection = WScript.CreateObject("ADODB.Connection") Set objRecordset = WScript.CreateObject("ADODB.Recordset") Set objCatalog = WScript.CreateObject("ADOX.Catalog") WScript.Echo "Почтовый индекс [" & strPostCode & "] встречается в:" WScript.Echo "------------------------------------------------------------------" intTotalOccuped = 0 For Each objFile In objFSO.GetFolder(strSourceFolder).Files If StrComp(objFSO.GetExtensionName(objFile.Name), "xls", vbTextCompare) = 0 Then WScript.Echo "[" & objFile.Path & "]" With objConnection .Provider = "Microsoft.Jet.OLEDB.4.0" .Properties.Item("Extended Properties").Value = "Excel 8.0;HDR=Yes;IMEX=1" .Open objFile.Path objCatalog.ActiveConnection = objConnection For Each objTable In objCatalog.Tables If StrComp(objTable.Type, "TABLE", vbTextCompare) = 0 Then With objRecordset .Open "SELECT indexto FROM [" & objTable.Name & "] WHERE indexto = '" & strPostCode & "'", objConnection, adOpenStatic, adLockOptimistic, adCmdText intTotalOccuped = intTotalOccuped + .RecordCount WScript.Echo vbTab & "[" & objTable.Name & "] - " & .RecordCount & " раз(а)" .Close End With End If Next objCatalog.ActiveConnection = Nothing .Close End With End If Next WScript.Echo "------------------------------------------------------------------" WScript.Echo "Всего " & intTotalOccuped & " раз(а)" Set objCatalog = Nothing Set objRecordset = Nothing Set objConnection = Nothing Else WScript.Echo "Source folder [" & strSourceFolder & "] not found." WScript.Quit 2 End If Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptFullName & """ <Source folder>" WScript.Quit 1 End If WScript.Quit 0 ![]() Путь к целевому каталогу указывается аргументом скрипта. Скорректируйте строку подключения под Ваш драйвер OLEDB. В случае x64 ОС и x86 версии драйвера (как, например, в моём примере) используйте x86-версию исполнителя cscript.exe из каталога %SystemRoot%\SysWOW64. |
|||
Последний раз редактировалось Iska, 20-04-2018 в 06:24. Причина: В связи с выкладыванием второго файла претензии сняты. Отправлено: 16:04, 19-04-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Поправил недоработку в предыдущем сообщении, оставшуюся от отладки (не везде заменил прямой константный путь на переменную strSourceFolder).
|
Отправлено: 06:26, 20-04-2018 | #6 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Спасибо. Что-то у меня cscript не запускается.
|
Отправлено: 14:20, 20-04-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата romfus:
|
|
Отправлено: 14:23, 20-04-2018 | #8 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 14:29, 20-04-2018 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:38, 20-04-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MySQL - Join таблиц из разных БД | Okot | Программирование и базы данных | 2 | 25-01-2018 01:37 | |
CMD/BAT - [решено] Как определить количество установленной памяти в ХР с помошью .cmd .bat? | xaosxaos | Скриптовые языки администрирования Windows | 17 | 28-03-2017 23:57 | |
2003/XP/2000 - Печать таблиц из Excel в альбомном формате | ReakT | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 22-07-2015 11:10 | |
2010 - [решено] Импорт данных таблиц excel в документе word | sov44 | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 22-04-2015 08:20 | |
MySQL как выбрать 3 значения из разных таблиц? | benya | Вебмастеру | 5 | 28-07-2005 17:02 |
|