【问题标题】:Using vbs saving a .xlsx as a tab delimited .txt file使用 vbs 将 .xlsx 保存为制表符分隔的 .txt 文件
【发布时间】:2016-08-04 17:11:50
【问题描述】:

我只是打开一个文件,删除两行并更改单元格 a1 的内容,然后尝试将 excel 文件另存为制表符分隔的文本文件。我尝试了很多方法,但无论哪里有冒号 (:),一切都会给我一个编译阅读“预期语句”错误。

 Set ExcelObject = CreateObject("Excel.Application")
 ExcelObject.visible = True
 ExcelObject.Workbooks.Open"c:\snowfall.xlsx",Default, False
 ExcelObject.sheets(1).Rows("1:2").Delete
 ExcelObject.Sheets(1).Cells(1,1).value = "testing write function"
 ExcelObject.SaveAs Filename:=Activesheet.name, FileFormat:=xlText, _

唯一有错误的行是最后一行:

ExcelObject.SaveAs Filename:=Activesheet.name, FileFormat:=xlText, _

在过去的三天里,我一直在用头撞墙,试图让它发挥作用:/

【问题讨论】:

  • 您在该行的末尾有一个 _,因此您还没有显示其他选项集......或者这可能是导致问题的原因......
  • ExcelObject.SaveAs 是错误的,您保存的是工作簿而不是应用程序本身。还显示 SaveAs 的完整代码....问题可能就在那里。
  • 简短的回答是将ExcelObject.SaveAs替换为ExcelObject.Sheets(1).SaveAs

标签: excel vbscript save-as csv


【解决方案1】:

您有几个错误。

  1. 如 cmets 中所述,您保存的是工作簿,而不是 Excel.Application 对象。对.Sheets 的调用需要参考 工作簿也是如此。 .Open 方法返回对 工作簿 - 抓住它在下面使用。
  2. VBScript 对 内置 Excel 常量。您需要提供的实际值 它们在枚举中表示。例如,xlText 是 -4158。
  3. VBScript 不支持命名参数语法。您需要明确地传递它们。
  4. ActiveSheet.Name 将返回 snowfall.xlsx。您需要使用 .txt 扩展名保存文件。

最终结果应该更像这样:

 Set ExcelObject = CreateObject("Excel.Application")
 ExcelObject.Visible = True
 Set wb = ExcelObject.Workbooks.Open("c:\snowfall.xlsx")
 wb.Sheets(1).Rows("1:2").Delete
 wb.Sheets(1).Cells(1, 1).Value = "testing write function"
 wb.SaveAs "c:\snowfall.txt", -4158

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多