首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从.vbs文件调用VBA宏引发800A03EC错误

从.vbs文件调用VBA宏引发800A03EC错误
EN

Stack Overflow用户
提问于 2014-04-29 16:57:56
回答 3查看 10.1K关注 0票数 0

我正在尝试通过.VBS文件(文件名: Check_final.vbs)运行VBA宏。以下是代码

代码语言:javascript
运行
复制
Option Explicit

run_macro

Sub run_macro()
    Dim xl1
    Dim sCurPath
    Dim xlBook
    Dim FolderFromPath
    Set xl1 = CreateObject("Excel.application")

    sCurPath =Wscript.ScriptFullName                                                                            
    Set xlBook = xl1.Workbooks.Open(sCurPath, 0, True)
    xl1.DisplayAlerts = False
    FolderFromPath = Left(sCurPath, InStrRev(sCurPath, "\"))
    xl1.Application.run FolderFromPath & "Changed_chk.xlsm!Check"

    Set xlBook = Nothing
End Sub

当我运行这个.vbs文件时,我得到了这个弹出窗口'Changed_chk.xlsm已锁定为编辑‘,并带有只读和通知选项。如果我使用Read only或notify选项进行确认,则会打开一个名为Check_final (这是该.vbs文件的文件名)的excel工作表,并且上面提到的代码将显示为写入该excel文件中。然后我得到一个Windows脚本主机错误(代码: 800A03AC),告诉我宏可能不可用或所有宏都被禁用。(尽管我已经启用了这里提到的宏。[http://www.addictivetips.com/windows-tips/enable-all-macros-in-excel-2010/)]。这方面的任何帮助都是非常感谢的。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-29 19:07:40

你打开你的vbs文件而不是你的excel文件...还要确保您的函数/sub是公共的。在下面的示例中,我在模块"YourModuleName“中创建了一个Public Sub Check,我从vbs-file调用它。

代码语言:javascript
运行
复制
Option Explicit

run_macro

Sub run_macro()
    Dim xl1
    Dim xlBook
    Dim FolderFromPath
    Set xl1 = CreateObject("Excel.application")

    FolderFromPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "") 
    set xlBook = xl1.Workbooks.Open(FolderFromPath & "Changed_chk.xlsm")
    xl1.Application.run "'" & xlBook.Name & "'!YourModuleName.Check"
    xl1.Application.Quit
End Sub
票数 2
EN

Stack Overflow用户

发布于 2014-04-29 19:28:31

尝试这个简单的代码(未测试)

代码语言:javascript
运行
复制
Dim oXlApp, oXLWb, sCurPath

Set oXlApp = CreateObject("Excel.application")

sCurPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

Set oXLWb = oXlApp.Workbooks.Open(sCurPath & "Changed_chk.xlsm")

oXlApp.DisplayAlerts = False

oXlApp.Run "Check"

'~~> Close the file here. Save or discard the changes as per your requirement 
'oXLWb.Close (True)
'oXLWb.Close (False)
oXLWb.Close
oXlApp.Quit

Set oXLWb = Nothing
Set oXlApp = Nothing

另外,你的宏在哪里?在工作表中还是在模块中?你可能想看看THIS

票数 1
EN

Stack Overflow用户

发布于 2014-04-29 17:49:36

我认为调用run_macro语句可能有问题。从我在excel VBA中创建的测试中,如果我尝试在另一个子对象的外部调用该子对象,则会出现错误。

代码语言:javascript
运行
复制
Option Explicit
test

Sub test()
    MsgBox ("Test")
End Sub

我想你可能想

代码语言:javascript
运行
复制
Option Explicit
Sub Start
    run_macro
End Sub

Sub run_macro()
    'code here
End Sub

或者完全删除run_macro行?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23360041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档