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
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 –
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. –
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 –