为什么当我使用审计命令语言或 Windows cmd 附加或合并用户生成的报告(例如 Excel 文件中手动编码的日记帐分录)中的数据时,这些数据会被破坏?
例如,我试图附加销售报告的内容,该报告的数据内容是由人工手动输入的——但是,一旦我附加它们,数据就会被破坏。计算机生成的报告(即 SAP 生成的报告)则不会出现这种情况。
答案1
Excel 文件二进制文件,而不是纯文本。运行copy *.txt consolidated.txt
没问题,但运行copy *.xls consolidated.xls
不起作用,因为二进制文件是经过编码的,所以你必须打开一个特定的程序来理解文件中数据的结构。
合并文件夹中的 Excel 文件的一种方法是将它们转换为纯文本格式(例如 csv),然后使用copy
命令行进行合并。
您可以创建一个宏来为您执行此操作:
创建一个新的 Excel 文件。将文件保存在与要合并为启用宏的工作簿的文件相同的目录中:例如Csv转换器.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 合并.csv
打开合并.csv在 Excel 中并再次保存为常规 .xlsx 工作簿以应用任何格式或其他更改。