【问题标题】:Issue with VBA converting .XLSX file to bulk .CSVVBA 将 .XLSX 文件转换为批量 .CSV 时出现问题
【发布时间】:2021-01-27 15:31:43
【问题描述】:

我每月收到一个包含多张工作表的 Excel 文件。每张工作表都需要先拆分为 .CSV 文件,然后才能上传到我们的系统中进行阅读,而且鉴于单个工作簿可能包含 10 到 15 页以上,手工完成是一件苦差事。

目前,我正在使用这个 VBA 脚本来完成这项工作:

Sub Splitbook()
     'Updateby20140612
     Dim xPath As String
          xPath = Application.ActiveWorkbook.Path
          Application.ScreenUpdating = False
          Application.DisplayAlerts = False
     For Each xWs In ThisWorkbook.Sheets
     xWs.Copy
          Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".csv"
          Application.ActiveWorkbook.Close False
     Next
          Application.DisplayAlerts = True
          Application.ScreenUpdating = True
End Sub

它“有效”。问题?当您尝试打开生成的 csv 窗口时,会抱怨扩展名不匹配并警告损坏。如果您单击对话框,它仍然会打开,但目标系统不能这样做。因此,我只剩下找出丢失的内容或返回手动解析。有什么帮助吗?

【问题讨论】:

  • 你好,达米亚诺。欢迎来到堆栈溢出。您确定此代码“有效”吗?生成的文件应该可以在文本编辑器中打开和读取(如果它对于记事本来说太大,请尝试使用 notepad++ 或类似工具)。在我看来,您正在保存一堆 Excel 文件,但为它们提供了“.csv”的文件扩展名。您没有指定“文件格式”,只是它的名称。
  • 这很可能是我的问题。我对 vba 不是特别精通,并且不久前从一个专注于拆分工作簿的线程中获得了该脚本的大部分内容。我需要添加什么来修复它?
  • 检查我链接到的另一个 SO 问题,如果您觉得它有帮助,请点赞。它在代码中有一个“另存为”行,您可能会发现它很有用。
  • 我不确定我是否遗漏了一个细节......代码看起来应该可以工作,但是当我运行它时,所发生的只是工作簿更新,每张工作表都需要工作簿的名称,而无需制作 CSV 文件。我会注意到这个其他代码需要我指定一个目标目录,我更喜欢我只是将文件放在工作簿已经在的同一目录中。

标签: excel vba csv xlsx excel-2016


【解决方案1】:

我创建了一个版本,将您的代码与其他答案的相关部分结合在一起。打开的工作簿将依次获取每个工作表的名称。因此,在运行此代码之前保存您的工作簿非常重要。最后打开的版本将包含所有选项卡,但它们不在保存的同名 CSV 文件中。

如果您想在最后再次保存回原始名称和格式,我认为其他一些答案也可以提供帮助。

我已删除工作表复制命令并注释掉 Application.ActiveWorkbook.Close False 行,因为我不确定他们在做什么。

Sub Splitbook()

     Dim xPath As String
     xPath = Application.ActiveWorkbook.Path
     Application.ScreenUpdating = False
     Application.DisplayAlerts = False
     
     For Each xWs In ThisWorkbook.Sheets
         xWs.SaveAs Filename:=xPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV
          'Application.ActiveWorkbook.Close False
     Next
     
     Application.DisplayAlerts = True
     Application.ScreenUpdating = True

End Sub

【讨论】:

  • 这完全符合需要!我自己几乎把它弄糊涂了,只是错过了保存步骤。谢谢!
猜你喜欢
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2011-07-12
  • 2015-07-04
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多