打开 Excel 文件,运行宏,保存(覆盖)
Posted
技术标签:
【中文标题】打开 Excel 文件,运行宏,保存(覆盖)【英文标题】:Open an Excel file, run a macro, save it (overwrite) 【发布时间】:2015-06-02 23:59:25 【问题描述】:我目前正在尝试创建一个 .vbs
-
打开 Excel
运行宏
保存新信息
退出
这是我目前所拥有的:
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("C:\test\test.xlsm", 0, True)
xlApp.Run "test"
xlbook.Save
xlBook.Close False
set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
WScript.Echo "Upload is Finished"
WScript.Quit
我收到“上传已完成”,但未保存宏。我做错了什么?
宏只是将一些东西从一个工作表放到另一个工作表:
Sub test()
'
' test Macro
'
Sheets("Sheet2").Select
Range("A1:A10").Select
Range("A10").Activate
Selection.Cut
ActiveSheet.Previous.Select
Selection.End(xlToLeft).Select
Range("A2").Select
ActiveSheet.Paste
End Sub
【问题讨论】:
将xlBook.Close False
更改为xlBook.Close
【参考方案1】:
出于好奇,为什么要在 Excel 中使用宏?如果你是通过对象来控制Excel,为什么不在里面也有宏代码呢?
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("C:\test\test.xlsm", 0, True)
xlbook.Sheets("Sheet2").Range("A1:A10").Cut
xlbook.Sheets("Sheet2").Previous.Select
xlbook.Range("A2").Paste
xlbook.Save
xlBook.Close False
set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
WScript.Echo "Upload is Finished"
WScript.Quit
【讨论】:
因为它不是我感兴趣的那个宏的“实际移动”,而是能够 1)打开 excel 2)运行宏 3)保存我感兴趣的过程。我的实际宏这个过程需要用到的比较大。如果我可以用一个小宏来完成,我应该可以用一个小宏来完成这个过程。我会试试这个宏:)【参考方案2】:xlBook.Close False
表示“关闭且不保存更改”。也许你想要
xlBook.Close SaveChanges:=True
【讨论】:
OP 在关闭前保存,我也这样做,因为我在关闭之前保存时遇到了问题。我不记得具体细节,但它引发了另一个问题,我发现保存它之前允许我传递抑制问题所需的参数。 xlBook.Close SaveChanges:=True 在我运行脚本时返回错误。如果我将 xlbook.close 替换为 xlbook.close SaveChanges:=True ,则会收到“预期语句”错误:(以上是关于打开 Excel 文件,运行宏,保存(覆盖)的主要内容,如果未能解决你的问题,请参考以下文章
Excel 保存文件出现 您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任中心的文件阻止设置阻止