【发布时间】:2022-05-16 14:50:33
【问题描述】:
有没有办法使用 VBScript 将每个 Excel 工作表(在具有多个工作表的工作簿中)中的一系列单元格导出到 CSV?我不需要跳过空格或进行任何重新格式化。
我尝试了以下方法。您可以将其复制粘贴到记事本中并将其保存为 test.vbs:
Dim oExcel
Dim oBook
Dim oWS
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("c:\test\test.xlsx")
For Each oWS In oBook.Sheets
oWS.Range("A9:B32").copy
oWS.clear
oWS.Range("A9:B32").paste
oWS.Copy
oExcel.ActiveWorkbook.SaveAs oBook.Path & "\" & oBook.name & "_" & oWS.Name & ".csv",6
oExcel.ActiveWorkbook.Close False
Next
oBook.Close False
oExcel.Quit
Set oExcel = Nothing
我尝试复制单元格范围,清除工作表,然后再次粘贴到工作表中并将其另存为 CSV。它说“错误:对象不支持此属性或方法:'oWS.clear'”
提前致谢
【问题讨论】:
-
Worksheet没有Clear方法。Range确实如此。 -
换句话说,可能是
oWS.UsedRange.Clear。 -
谢谢,所以我没有使用 ows.clear,而是使用 ows.range("A1:ZZ1000").clear 来删除内容。然后放入 oWS.Range ("A9:B32").pastespecial。而不仅仅是.paste。当我尝试运行它时,我得到“错误:Range 类的 PasteSpecial 方法失败代码:800A03EC”
-
试试
Dim temp、temp = oWS.Range("A9:B32").Value、oWS.UsedRange.Clear、oWS.Range("A9:B32").Value = temp(未经测试)。 -
是的,使用 A1 而不是 A9 和 Dim Temp...等代码。现在可以了!非常感谢