[英]Export Range of (Part of) an Excel Sheet to CSV with VBScript
Is there a way to export a range of cells from each Excel worksheet (in a workbook with multiple worksheets) to a CSV with VBScript?有没有办法使用 VBScript 将每个 Excel 工作表(在具有多个工作表的工作簿中)中的一系列单元格导出到 CSV? I don't need to skip blanks or do any re-formatting.
我不需要跳过空格或进行任何重新格式化。
I tried the following.我尝试了以下方法。 You can copy-paste this into notepad and save it as test.vbs:
您可以将其复制粘贴到记事本中并将其另存为 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
I tried to copy the range of cells, clear the worksheet then paste into the worksheet again and save that as a CSV.我尝试复制单元格范围,清除工作表,然后再次粘贴到工作表中并将其另存为 CSV。 It says "Error: Object doesn't support this property or method: 'oWS.clear'"
它说“错误:对象不支持此属性或方法:'oWS.clear'”
Thanks in Advance提前致谢
Thanks for all the help.感谢所有的帮助。 This works and gives what I was looking/asking for: For Each oWS In oBook.Sheets
这有效并提供了我正在寻找/要求的内容:对于 oBook.Sheets 中的每个 oWS
Dim temp temp = oWS.Range("A5:BY32").Value oWS.UsedRange.Clear oWS.Range("A1:BY29").Value = temp oWS.Copy Dim temp temp = oWS.Range("A5:BY32").Value oWS.UsedRange.Clear oWS.Range("A1:BY29").Value = temp oWS.Copy
oExcel.ActiveWorkbook.SaveAs oBook.Path & "" & oBook.name & "_" & oWS.Name & ".csv", outputFormat oExcel.ActiveWorkbook.SaveAs oBook.Path & "" & oBook.name & "_" & oWS.Name & ".csv", outputFormat
oExcel.ActiveWorkbook.Close False oExcel.ActiveWorkbook.Close False
Next The range is actually up to column "BY". Next 范围实际上是“BY”列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.