使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章