打开 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用宏命令VBA新建并打开一个新的excel?

Excel 保存文件出现 您试图打开的文件类型(Excel 2007和更高版本的启用宏的工作簿和模板)被信任中心的文件阻止设置阻止

Excel中使用宏工具,告别重复工作,批量处理xls文件 - WPS Excel

VBA学习问题Excel2016无法保存宏文件的解决办法

打开EXCEL文件里会多打开一个空白表格

如何去除excel的宏保护?