2017-01-20 5 views
1

I einen MacRob in WorkbookB zu schreiben versuchen, das eine andere WorkbookA öffnet und läuft macroA in sheet1.führen einen VBA-Makro in einer Arbeitsmappe von einer anderen Arbeitsmappe

ich gegoogelt und fand zwei Methoden:

  • Application.Run

    Dim i As Integer, en As Integer 
    en = Range("B4") 
    
    Application.Run "C\Mtest\WorkbookA.xlsb !macroA" 
    

    verwenden aber ich habe den Fehler 1004: entweder die Makro-Dosis nicht in diesem Blatt gefunden werden oder das Makro ist

  • deaktivieren
  • Verwendung RunAutoMacros

    Workbooks.Open "C\Mtest\WorkbookA.xlsb" 
    Workbooks("WorkbookA.xlsb").Worksheets("sheet1").Activate 
    ActiveWorkbook.RunAutoMacros macroA 
    

    Und hier bekomme ich den Fehler: 1004 die Methode RunAutoMacros funktioniert nicht.

Irgendeine Idee, was ist falsch? Oder wie kann ich es besser machen?

+2

Der einfachste Weg, verwenden ein Makro hinzufügen zu Ihrer XLSTART-Datei, so dass sie an alle geöffneten Excel-Instanzen angehängt wird (gespeichert als .xla oder .xlam). Der Speicherort der Datei sollte% USERPROFILE% \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART für Win7 und neuer sein. Ich persönlich tendiere dazu, schnelle Ribbon Buttons an das Makro anzuhängen, wenn ich es oft genug laufen lasse. – Cyril

Antwort

3

Angenommen, Ihre macroA in dem Codemodul von sheet1 der Arbeitsmappe ist C\Mtest\WorkbookA.xlsb, sollten Sie

Application.Run "'C\Mtest\WorkbookA.xlsb'!sheet1.macroA" 
2

Ich denke, der Platz ist das Problem. Versuchen Sie es zu entfernen. dh - ändern Sie diese Zeile

Application.Run "C\Mtest\WorkbookA.xlsb !macroA" 

zu

Application.Run "C\Mtest\WorkbookA.xlsb!macroA" 
Verwandte Themen