Я бы сделал это в VBScript или даже в VB.NET или Powershell, если вы так склонны.
Используя VB.NET, вы можете получать доступ к электронным таблицам Excel, как если бы они были базами данных, через поставщика OLEDB.Код для выбора диапазона значений может выглядеть следующим образом:
Try
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim DtSet As System.Data.DataSet
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
MyConnection = New System.Data.OleDb.OleDbConnection _
("provider=Microsoft.Jet.OLEDB.4.0;" _
" Data Source='testfile.xls'; " _
"Extended Properties=Excel 8.0;")
MyCommand = New System.Data.OleDb.OleDbDataAdapter _
("select * from [Sheet1$]", MyConnection)
MyCommand.TableMappings.Add("Table", "TestTable")
DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)
MyConnection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
После того, как вы получите данные, которые вы можете уточнить, добавьте результат в другую электронную таблицу Excel, используя тот же API.
Получить список файлов легко в .NET с вызовом System.IO.Directory.GetFiles()
;просто укажите подстановочный знак "* .xls".Когда у вас есть список, просто используйте цикл for для его итерации, открывая каждый файл по очереди, затем выполняйте запрос к этому файлу и так далее.
Если вы используете VBScript, тогда предпочтительный способ получить список файлов Excel - это использовать Scripting.FileSystemObject
, в частности, метод GetFolder .Это работает в основном так же, но синтаксис немного отличается.
Если это VBScript или VB.NET, он, вероятно, будет работать за пределами самого Excel.Вы бы запустили его, дважды щелкнув, или из командного файла, или что-то в этом роде.Преимущество использования VB.NET заключается в том, что вы можете создать графическую форму для взаимодействия - она может отображать индикатор выполнения, отслеживая, сколько файлов вы прошли, обновления статуса и тому подобное.