【问题标题】:Export Range of (Part of) an Excel Sheet to CSV with VBScript使用 VBScript 将 Excel 工作表的(部分)范围导出为 CSV
【发布时间】: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 temptemp = oWS.Range("A9:B32").ValueoWS.UsedRange.ClearoWS.Range("A9:B32").Value = temp(未经测试)。
  • 是的,使用 A1 而不是 A9 和 Dim Temp...等代码。现在可以了!非常感谢

标签: excel vbscript


【解决方案1】:

感谢所有帮助。这有效并提供了我正在寻找/要求的内容

For Each oWS In oBook.Sheets  
    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.Close False  
Next 

范围实际上是“BY”列。

【讨论】:

    猜你喜欢
    • 2017-11-07
    • 2019-03-10
    • 2015-05-23
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2018-07-25
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多