2016-04-29 3 views
0

So habe ich ein Makro in Worksheet1, das eine andere Datei (Worksheet2) öffnet und dann kopieren und fügt bestimmte Zelle und Transfer von Worksheet1 zu Worksheet2.Ausführen von Excel-Makro aus einer anderen Arbeitsmappe mit dynamischen Dateipfad Speicherort

Nachdem das Makro von Worksheet1 kopiert wurde und die Zellen von Worksheet1 nach Worksheet2 eingefügt wurden, wird dasselbe Makro aus Worksheet1 ein anderes Makro (das in Worksheet2 eingebettet wurde) zum Ausführen auslösen.

Ich habe die Codes arbeiten von Öffnen von Worksheet2, Kopieren und Einfügen von Daten aus Worksheet1 zu Arbeitsblatt2, das einzige Problem ist das Makro in Worksheet1 zu triggern, um das Makro in Worksheet2 eingebettet auszuführen.

Sub FCY() 
' 
' Macro3 Macro 
' 

    Dim MainFile As Workbook 
    Dim jnl As Workbook 
    Dim RF As Workbook 
    Dim FileExt As String 

    Set MainFile = ActiveWorkbook 

    'FileExt - Cells where is Worksheet2 being saved (example: Worksheet2.xls) 
    FileExt = Sheets("REF Data").Cells(25, 7).Value & "." & Cells(25, 9).Value 

    'Set jnl - a command to open the Worksheet2 by using the "FileExt" plus the File Location 
    'which is entered in Cells (22,7) or Range("G22") (example - C:\Documents\Worksheet2.xls) 
    Set jnl = Workbooks.Open(Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt) 

    'Selecting the specified cells to copy and paste from Worksheet1 to Worksheet2 
    MainFile.Activate 
    Sheets("FCY").Select 
    Range("B11:BJ11").Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Selection.Copy 
    jnl.Activate 
    Range("B11:BJ11").Select 
    ActiveCell.PasteSpecial xlPasteValues 


    'Command which runs another Macro embedded in Worksheet2 
    'Incorrect code to run the macro in Worksheet2 
    Application.Run (Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & SaveAstab) 

' 
End Sub 

Ich weiß schon, dass dies erreichen sein kann mit diesem Code:

Application.Run ("'C:\Documents\Worksheet2.xls'!SaveAstab") 

Hinweis: SaveAstab ist der Name des Makros in Arbeitsblatt 2

Aber wenn man über die Datei bemerkt Ort + Dateiname + Erweiterungsname wird von den Benutzern in bestimmte Zellen eingegeben. Ich meine, die Details von Dateiposition + Dateiname + Erweiterungsname sind dynamisch und werden von den Benutzern eingegeben.

Mein Problem ist, wenn ich die Zellen aufrufen, die ich für den Speicherort der Datei + Dateiname + Erweiterungsname zugewiesen habe, habe ich einen Fehler (Laufzeitfehler 9).

‘Incorrect code to run the macro in Worksheet2 
Application.Run (Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & SaveAstab) 

Könnte jemand sein Fachwissen in dieser Angelegenheit teilen? Vielen Dank

+0

Warum Sie SaveAsTab als Variable verwenden? ist es irgendwo definiert, für mich sieht es so aus als würdest du "! SaveAstab" so verwenden, als String –

+0

Hallo @DoktorOSwaldo, danke dass du dir das angeschaut hast. Ja, "SaveAstab" ist auf WorkSheet2 definiert. Es ist ein Makro von einer anderen Person entwickelt. Ich kann nicht nachahmen, was er getan hat und es wird Zeit brauchen, genau das zu tun, was er tut. Anstatt das zu tun, habe ich einfach den application.run-Code verwendet, um das Makro in Worksheet2 mit Arbeitsblatt1 auszuführen. –

+0

nein nein, das ist nicht das, was ich frage =) Ich frage nach Ihrer letzten Codezeile: Application.Run (Arbeitsblätter ("REF Data"). Zellen (22, 7) .Wert & "\" & FileExt & SaveAstab) <--- Hier verwenden Sie SaveAstab wie eine Variable, und in Ihrem Hardcode-Beispiel: Application.Run ("C: \ Dokumente \ Worksheet2.xls!! SaveAstab") <---- ist es ein String –

Antwort

1

Versuchen Sie, dass ...

Dim runCommand as String 
runCommand = Chr(39) & Worksheets("REF Data").Cells(22, 7).Value & "\" & FileExt & Chr(39) & "!SaveAstab" 
Debug.print runCommand 
Application.Run(runCommand) 

Und gib mir te Ausgang uf debug.print

+0

Ich bekomme dieses C: \ Documents \ Worksheet2.xls! SaveAsTab, aber es läuft immer noch nicht das Makro. –

+0

versuchen Sie den aktualisierten Code –

+0

danke @Doktor OSwaldo. jetzt geht es. –

Verwandte Themen