【发布时间】:2015-09-17 14:18:38
【问题描述】:
以下 VBA sn-p 在一台装有 Excel 版本的机器上正常工作 “Microsoft(R) Office Excel(R) 2007 (12.0.6727.5000) SP3 MSO (12.0.6728.5000)” 但不是与 “Microsoft(R) Office Excel(R) 2007 (12.0.6729.5000) SP3 MSO (12.0.6728.5000)”
中断和单步执行表示 wSheet 正在迭代已知工作表,但导出的文件仅包含第一个工作表的内容 - 即 sheet1.csv、sheet2.csv、sheet3.csv 均已保存,但每个一个包含工作簿中 sheet1 的内容。
仅保存活动工作表的单独“宏”的行为相同 - 无论在调用“宏”时哪个工作表处于活动状态,仅保存第一个工作表中的数据,但保存到名为活动工作表。 DBPrint 语句还显示 wSheet 正在遍历工作表。 (DBPrint 只是一个带有开/关开关的 Debug.Print。)
For Each wSheet In ActiveWorkbook.Worksheets
wSheet.Activate
wSheetName = wSheet.Name
SaveAsName = wBookName & "." & wSheetName & ".csv"
DBPrint "saving as " & SaveAsName
On Error Resume Next
wSheet.SaveAs filename:=SaveAsName, FileFormat:=xlCSV
' ... error handling code (no errors reported, though)
On Error GoTo 0
Next wSheet
【问题讨论】:
-
从你的休息和单步走,我认为这不会找到任何有用的东西,但你介意试试这个吗?在
On Error Resume Next之后,输入Msgbox wSheet.Name并确保它每次都说出预期的名称?抱歉,如果是我自己的代码,我会从这里开始。 -
谢谢你,puzzlepiece87。 Msgbox 报告了所有导出工作表的正确工作表名称,但实际上仍然导出了第一个工作表的内容。
-
啊,那我不知道还有什么问题(除非它与 .csv 文件有关,我从不使用),但我发布了一个解决方法。
-
对了,你把
wBookName设置在什么地方了吗? -
它也可能因为您使用 ActiveWorkbook 而中断。