使用 vbs 将 .xlsx 保存为制表符分隔的 .txt 文件

Posted

技术标签:

【中文标题】使用 vbs 将 .xlsx 保存为制表符分隔的 .txt 文件【英文标题】:Using vbs saving a .xlsx as a tab delimited .txt file 【发布时间】: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 【参考方案1】:

您有几个错误。

    如 cmets 中所述,您保存的是工作簿,而不是 Excel.Application 对象。对.Sheets 的调用需要参考 工作簿也是如此。 .Open 方法返回对 工作簿 - 抓住它在下面使用。 VBScript 对 内置 Excel 常量。您需要提供的实际值 它们在枚举中表示。例如,xlText 是 -4158。 VBScript 不支持命名参数语法。您需要明确地传递它们。 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

【讨论】:

以上是关于使用 vbs 将 .xlsx 保存为制表符分隔的 .txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

excel保存为制表符分隔的文本文件 js无法完整读取

通过公式 EXCEL 制表符分隔导出

csv如何转化为excel

制表符分隔文件的 OleDb 连接字符串

Apache POI将txt文件读取为excel文件

制表符分隔文本的复制粘贴会导致 Excel 中出现奇怪的格式?