在Access VBA中运行Excel的VBA子项

时间:2019-05-24 13:23:17

标签: excel vba access-vba access ms-access-2016

我认为在这一点上,我已经阅读了所有有关问题的内容,没有任何东西可以解决我的问题。

我需要运行一个嵌套在big excel中的vba代码,其中包含很多工作表。该宏应该为我准备表格,并且隐藏在按钮下方。它位于工作表“ Process”上。

在Access VBA中,我使用以下代码打开并运行此Excel vba代码:

Dim fd As FileDialog, fileName As String

    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    fd.AllowMultiSelect = False

    If fd.Show = True Then
        If fd.SelectedItems(1) <> vbNullString Then
            fileName = fd.SelectedItems(1)
        End If
    Else
        'Exit code if no file is selected
        End
    End If

    selectFile = fileName

    Dim appExcel As Excel.Application
    Dim myWorkbook As Excel.Workbook

    ' variables needed to open the macro in Excel
    Const MODULE_NAME As String = "Extraction_BDD"
    Const PROC_NAME As String = "extracteur"
    Dim appExcelMacro As String

    Set appExcel = CreateObject("Excel.Application")  
    Set myWorkbook = appExcel.Workbooks.Open(selectFile, True, False)

    appExcel.Visible = True
    Set appExcel = Nothing
    Set myWorkbook = Nothing
    ClasseurName = ActiveWorkbook.Name

    ' builds the string to send to Excel.Run method:
    appExcelMacro = ClasseurName & "!" & MODULE_NAME '& "." & PROC_NAME    
    appExcel.Run (appExcelMacro)

    ' Close workbook and save changes
    Workbooks(ClasseurName).Close SaveChanges:=False

End Sub

此命令“ appExcel.Run(appExcelMacro)”应该可以完成任务,但是什么也没做。我不断收到错误消息:

“运行时错误'1004':

无法运行宏“ MyWorkbook!Module_3.extracteur”。该宏可能在此工作簿中不可用,或者所有宏都可能被禁用”。

不是这种情况,因为在Excel中启用了该功能。在Excel中按下按钮后,宏可以很好地工作。

那么,我在做什么错?骇客在哪里?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 Cannot run the macro... the macro may not be available in this workbook

文件名中的空格导致了问题。