手动生成的 Excel 文件与计算机生成的报告/文件

手动生成的 Excel 文件与计算机生成的报告/文件

为什么当我使用审计命令语言或 Windows cmd 附加或合并用户生成的报告(例如 Excel 文件中手动编码的日记帐分录)中的数据时,这些数据会被破坏?

例如,我试图附加销售报告的内容,该报告的数据内容是由人工手动输入的——但是,一旦我附加它们,数据就会被破坏。计算机生成的报告(即 SAP 生成的报告)则不会出现这种情况。

答案1

Excel 文件二进制文件,而不是纯文本。运行copy *.txt consolidated.txt没问题,但运行copy *.xls consolidated.xls不起作用,因为二进制文件是经过编码的,所以你必须打开一个特定的程序来理解文件中数据的结构。

合并文件夹中的 Excel 文件的一种方法是将它们转换为纯文本格式(例如 csv),然后使用copy命令行进行合并。

您可以创建一个宏来为您执行此操作:

  1. 创建一个新的 Excel 文件。将文件保存在与要合并为启用宏的工作簿的文件相同的目录中:例如Csv转换器.xlsm

  2. alt+F11打开 Visual Basic 编辑器。选择插入然后模块

  3. 将以下代码粘贴到您的模块中(摘自此处)

    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
    
  4. 运行宏

  5. 现在在命令行上,导航到您的文件夹并输入

    复制 *.csv 合并.csv

  6. 打开合并.csv在 Excel 中并再次保存为常规 .xlsx 工作簿以应用任何格式或其他更改。

相关内容