Excel VBA将.XLSX文件转换为bulk.CSV时出现问题
我每月收到一份excel文件,其中包括多张表格。在上传到我们的系统进行阅读之前,每张工作表都需要拆分成.CSV文件。考虑到单个工作簿可能包含10到15页的内容,手工操作很麻烦 目前,我正在使用此VBA脚本来完成此任务:Excel VBA将.XLSX文件转换为bulk.CSV时出现问题,excel,vba,csv,xlsx,excel-2016,Excel,Vba,Csv,Xlsx,Excel 2016,我每月收到一份excel文件,其中包括多张表格。在上传到我们的系统进行阅读之前,每张工作表都需要拆分成.CSV文件。考虑到单个工作簿可能包含10到15页的内容,手工操作很麻烦 目前,我正在使用此VBA脚本来完成此任务: Sub Splitbook() 'Updateby20140612 Dim xPath As String xPath = Application.ActiveWorkbook.Path Application.Scre
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文件中 如果您想在最后再次保存回原始名称和格式,我认为其他一些答案也可以帮助您 我删除了工作表复制命令并注释掉了
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
你好,达米亚诺。欢迎来到堆栈溢出。您确定此代码“有效”吗?生成的文件应该可以在文本编辑器中打开并可读(如果对于记事本来说太大,请尝试记事本++或类似工具)。在我看来,您正在保存一堆Excel文件,但文件扩展名为“.csv”。您没有指定“文件格式”,只指定了它的名称。这是否回答了您的问题?这很可能是我的问题。我对vba不是特别精通,不久前,我从一个专注于拆分工作簿的线程中获得了这个脚本的大部分内容。我需要添加什么来修复它?检查我链接到的另一个SO问题,如果您觉得有帮助,请向上投票。它在代码中有一行“另存为”,你可能会发现它很有用。我不确定我是否遗漏了一个细节。。。代码看起来应该可以工作,但是当我运行它时,所有发生的事情就是工作簿更新,每个工作表都使用工作簿的名称,而从来没有生成CSV文件。我想指出的是,另一段代码要求我指定一个目标目录,我更喜欢我的代码将文件放在工作簿所在的同一个目录中。这完全符合需要!我自己几乎把它弄明白了,只是错过了“另存为”的步骤。非常感谢。