2016-11-18 2 views
0

Verbrachte einige Zeit Forschung und ich kann nicht herausfinden, was falsch ist.Ausführen von Excel VBA aus MS Access VBA

Sicherheitseinstellungen in beiden Dateien sind korrekt. Der Sub-Aufruf ist öffentlich & in einem normalen Modul.

Der Fehler heißt es: „Kann nicht Makro bla bla bla laufen ....“

Code:

Private Sub this() 
    Dim xl As Object 
    Set xl = CreateObject("Excel.Application") 
    xl.Visible = True 
    xl.Workbooks.Open "pathToFile" & "\" & "Dig IT.xlsm", True, False 
    xl.Run "ThisWorkbook.Module3" 
    Set xl = Nothing 
End Sub 
+0

Ah Gott im stumm. Änderte es in xl.Run "name" und es hat perfekt funktioniert. Als Antwort posten und Feedback erhalten –

Antwort

1

Statt "ThisWorkbook.Module3", müssen Sie den Namen der Arbeitsmappe, Modulname und Prozedurnamen liefern (Angenommen, "Module3" ist der Name des Code-Moduls, nicht die Sub/Funktion, die Sie ausführen möchten).

Ich glaube, dass in dem Format wie dieses (nicht getestet) sein sollte:

Private Sub this() 
    Dim xl As Object, wb as Object 
    Const MODULE_NAME As String = "Module3" '### MODIFY AS NEEDED! 
    Const PROC_NAME As String = "macro_name" '### MODIFY AS NEEDED! 
    Dim xlMacro As String 
    Set xl = CreateObject("Excel.Application") 
    xl.Visible = True 
    Set wb = xl.Workbooks.Open("pathToFile" & "\" & "Dig IT.xlsm", True, False) 

    ' builds the string to send to Excel.Run method: 
    xlMacro = wb.Name & "!" & MODULE_NAME & "." & PROC_NAME 
    ' call the macro in Excel 
    xl.Run xlMacro 
    Set xl = Nothing 
End Sub