如何解决VBA 将 .XLSX 文件转换为批量 .CSV 的问题
我每月收到一个包含多张工作表的 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 窗口时,会抱怨扩展名不匹配并警告损坏。如果您点击对话框,它无论如何都会打开,但目标系统不能这样做。因此,我只能找出缺少的内容或返回手动解析。有什么帮助吗?
解决方法
我创建了一个版本,它将您的代码与其他答案的相关部分结合在一起。打开的工作簿将依次采用每个工作表的名称。因此,在运行此代码之前保存您的工作簿非常重要。最后打开的版本将包含所有选项卡,但它们不在已保存的同名 CSV 文件中。
如果您想在最后再次保存为原始名称和格式,我认为其他一些答案也可以提供帮助。
我删除了 Worksheet Copy 命令并注释掉了 Sub get_data_from_file()
Dim FileToOpen as Variant
Dim OpenBook As Workbook
Dim wsdest as Worksheet
Dim lDestLastRow as Long
Application.ScreenUpdating=False
Set wsdest = Workbooks("Test.xslm").Worksheets("Input Sheet")
lDestLastRow=Sheet1.Cells(1,1).CurrentRegion.Row+1
FileToOpen=Application.GetOpenFileName(Title:="Browse for your file and input range",FileFilter:"Excel Files (*xls*),*xls*")
If FileToOpen<>False Then
SetOpenBook=Application.Workbooks.Open(FileToOpen)
OpenBook.Sheets(1)Range(B:E).Copy
wsdest.Range("A",lDestLastRow).PasteSpecial xlPasteValues
OpenBook.Sheets(1)Range(G:H).Copy
wsdest.Range("E",lDestLastRow).PasteSpecial xlPasteValues
OpenBook.Sheets(1)Range(M:M).Copy
wsdest.Range("G",lDestLastRow).PasteSpecial xlPasteValues
End if
Application.ScreenUpdating=True
End Sub
行,因为我不确定他们在做什么。
Application.ActiveWorkbook.Close False
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。