作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过如下代码将工作簿中的多个工作表导出到 .csv:
Sub Export_To_CSV(exportPath As String)
Dim filePath As String
For Each WS In ThisWorkbook.Worksheets
filePath = exportPath & "(" & WS.Name & ").dat"
WS.SaveAs Filename:=filePath, FileFormat:=xlCSV
Next
End Sub
问题是这会保存我打开的当前 .xlsm 文件。
如何在不更改当前文件名的情况下导出 .csv?
我认为 SaveCopyAs
可以解决问题,但它仅适用于 工作簿
,而不适用于工作表
。
最佳答案
这是我的想法,可以帮助你......添加这部分代码,而不是当前的 for...next
部分:
'...your code here
Dim tmpWS As Worksheet
Application.DisplayAlerts = False
For Each WS In ThisWorkbook.Worksheets
filePath = exportPath & "(" & WS.Name & ").dat"
WS.Copy
Set tmpWS = ActiveSheet
tmpWS.SaveAs Filename:=filePath, FileFormat:=xlCSV
tmpWS.Parent.Close False
Next
Application.DisplayAlerts = True
'...your code here
代码的逻辑?首先,它将工作表的副本复制到临时工作簿中,接下来将新工作表另存为 CSV 文件,最后关闭临时工作簿。此外,我添加了 Application.DisplayAlerts
指令,您的代码将覆盖 .csv
文件,而不询问文件是否已存在。
关于excel - 如何将多个工作表导出为 CSV(不保存当前工作表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232245/
我是一名优秀的程序员,十分优秀!