Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA将.XLSX文件转换为bulk.CSV时出现问题_Excel_Vba_Csv_Xlsx_Excel 2016 - Fatal编程技术网

Excel VBA将.XLSX文件转换为bulk.CSV时出现问题

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

我每月收到一份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文件中

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

我删除了工作表复制命令并注释掉了
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文件。我想指出的是,另一段代码要求我指定一个目标目录,我更喜欢我的代码将文件放在工作簿所在的同一个目录中。这完全符合需要!我自己几乎把它弄明白了,只是错过了“另存为”的步骤。非常感谢。