在VBA中获取“无法运行宏...”错误

时间:2013-08-15 00:48:51

标签: excel vba powerpoint

我最近学会了如何在VBA中编程,并通过阅读本网站上之前提出的问题和答案获得了一些非常有用的帮助。但是,我在我的一个程序中遇到了一个问题,似乎没有直接解决。所以我在这里问一下。

我正在制作一个Powerpoint宏,它将使用新数据自动更新一些幻灯片。对于包含excel表的一张幻灯片,我希望宏打开excel文件,在excel文件中运行现有宏以使用新数据填充电子表格,最后将表复制到powerpoint幻灯片。到目前为止我的代码(没有复制部分)是这样的:

Private Sub GetProposals()
    Dim myXL As Excel.Application
    Dim myXLS As Excel.Workbook
    Dim ws As Excel.Worksheet

    Set myXL = New Excel.Application
    Set myXLS = GetObject("K:\Jackson\Proposal Summary Master.xlsm")
    Set ws = myXLS.Sheets(1)
    ws.Visible = xlSheetVeryHidden

    myXLS.Sheets("VLOOKUP").Range("J1").Value = "EPL"
    myXL.Run ("'K:\Jackson\Proposal Summary Master.xlsm'!BABox_Change")
End Sub

它正确运行,直到我到达" myXL.Run ..."线。我收到一条消息说"运行时错误' 1004':无法运行宏" K:\ Jackson \ Proposal Summary Master.xlsm'!BABox_Change'。宏可能在此工作簿中不可用,或者可能禁用所有宏。"

当我直接打开文件并以这种方式启动时,excel宏运行正常。我有点卡在接下来应该做的事情上。有人有什么建议吗?

2 个答案:

答案 0 :(得分:0)

问题可能是因为您没有打开工作簿。但关键是要确保在执行代码后释放对象;这样,文件不会被您的powerpoint文件“锁定”,或者额外的“隐藏”进程/ Excel实例将保持打开状态。

Private Sub GetProposals()
    Dim myXL As Excel.Application
    Dim myXLS As Excel.Workbook
    Dim ws As Excel.Worksheet

    Set myXL = New Excel.Application
    Set myXLS = myXL.Workbooks.Open("K:\Jackson\Proposal Summary Master.xlsm")
    myXLS.Application.DisplayAlerts = False
    Set ws = myXLS.Sheets(1)
    ws.Visible = xlSheetVeryHidden

    myXLS.Sheets("VLOOKUP").Range("J1").Value = "EPL"
    myXLS.Application.Run ("BABox_Change")

    myXLS.Application.DisplayAlerts = True
    myXLS.Close(true) ' Change to false if you don't want to save Changes


    Set myXLS = Nothing
    Set myXL = Nothing
    Set ws = Nothing
End Sub

答案 1 :(得分:0)

辉煌。这对我也有用。我只是调整了部分

   myXLS.Sheets("VLOOKUP").Range("J1").Value = "EPL"
        myXLS.Application.Run ("BABox_Change")

到我的档案