使用VB脚本运行VBA宏并保存Excel工作簿

时间:2017-04-20 17:32:23

标签: vba excel-vba vbscript excel

我正在尝试从* .vbs 文件运行宏。你可以在下面找到代码。该模块运行没有问题(已经过测试)。但是工作簿没有保存。我尝试将ThisWorkbook.Save添加到模块本身但它会导致错误并告诉我我的文件是 ReadOnly 。为了澄清,我想知道如何在通过VBScript运行宏之后保存工作簿。

Option Explicit

'On Error Resume Next 'Comment-out for debugging

ExcelMacro

Sub ExcelMacro() 

 Dim xlApp 
 Dim xlBook 

 Set xlApp = CreateObject("Excel.Application") 
 Set xlBook = xlApp.Workbooks.Open("\\internal.company.com\River_Automated.xlsm", 0, True) 
 xlApp.Run "Update"

 xlBook.Save
 xlBook.Close
 xlApp.Quit 

 Set xlBook = Nothing 
 Set xlApp = Nothing 

End Sub 

可能有用的一些附注:

运行VBScript后,我得到了以下消息:

  

Resume.xlsw已经存在。你想替换它吗?

我添加了在End Sub之前创建文本文件的行,并创建了它。因此,它运行宏但不保存工作簿。

1 个答案:

答案 0 :(得分:1)

这一行:

Set xlBook = xlApp.Workbooks.Open("\\internal.company.com\River_Automated.xlsm", 0, True) 

导致文件以ReadOnly模式打开。 Open method的第三个参数决定了在ReadOnly模式下是否以True模式打开文件,或者False

  

ReadOnly |可选|变种|如果为True,则以只读模式打开工作簿。

解决方案是通过以下方式打开ReadOnly = False中的文件:

Set xlBook = xlApp.Workbooks.Open("\\internal.company.com\River_Automated.xlsm", 0, False)

或者,要检查文件是否为ReadOnly,如果是,请将其另存为其他内容。

If Not xlBook.ReadOnly Then
    xlBook.Save

Else
    xlBook.SaveAs ... '### Modify as needed
End If
xlBook.Close
xlApp.Quit 

Set xlBook = Nothing 
Set xlApp = Nothing