首页 文章

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

提问于
浏览
0

我试图从* .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 回答

  • 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
    

相关问题