Файли Excel - це двійкові файли , а не звичайний текст. Запуск copy *.txt consolidated.txtпрекрасний, але запуск copy *.xls consolidated.xlsне працює, тому що бінарні файли закодовані так, що вам потрібно відкрити конкретну програму, яка розуміє структуру даних у файлі.
Один із способів консолідувати папку файлів Excel - це просто перетворити їх у звичайний текстовий формат (наприклад, csv) та консолідувати ті, що використовуються copyв командному рядку.
Ви можете створити макрос для цього:
Створіть новий файл Excel. Збережіть файл у тому самому каталозі, що і файли, які ви хочете консолідувати як робочу книжку з підтримкою макросу: наприклад, CsvConverter.xlsm
Натисніть alt+, F11щоб відкрити редактор Visual Basic. Виберіть Вставити, а потім - Модуль .
Вставте наступний код у свій модуль (взято звідси) :
Option Explicit
Sub ConvertToCSV()
' Uses code from John Walkenbach's Power Programming book
'
Dim i As Long
Dim NumFiles As Long
Dim FileName As String
Dim FileNames() As String
' Get name of first file in backlog directory
FileName = Dir(ThisWorkbook.Path & "/*.xls")
NumFiles = 1
ReDim Preserve FileNames(1 To NumFiles)
FileNames(NumFiles) = FileName
' Get other file names, if any
Do While FileName <> ""
FileName = Dir()
If FileName <> "" Then
NumFiles = NumFiles + 1
ReDim Preserve FileNames(1 To NumFiles)
FileNames(NumFiles) = FileName
End If
Loop
' Save each file as a .csv file, overwriting any existing .csv files
Application.DisplayAlerts = False
For i = 1 To UBound(FileNames)
If FileNames(i) <> ThisWorkbook.Name Then
Workbooks.Open FileName:=ThisWorkbook.Path & "\" & FileNames(i)
ActiveWorkbook.SaveAs _
FileName:=Left(FileNames(i), Len(FileNames(i)) - 4) &
".csv", _
FileFormat:=xlCSV
ActiveWorkbook.Close
End If
Next i
Application.DisplayAlerts = True
End Sub
Запустіть макрос .
Тепер у командному рядку перейдіть до своєї папки та введіть
копія * .csv consolid.csv
Відкрийте консолідований.csv в Excel і збережіть як звичайний .xlsx підручник знову, щоб застосувати будь-яке форматування або інші зміни.