Jetzt brauche ich mal wieder Eure Hilfe.
Ich habe in EXCEL 2016 mehrere (ca. 20) Arbeitsmappen mit bis zu 80 Tabellen (Rechnungen). In diesen Tabellen sollen Automatisierungen ablaufen (z.B. einfügen/aktualisieren eines QR-Codes (als Grafik) oder Ausgabe der Rechnung (Tabelle) als PDF und Versand per Email . Die entsprechenden Prozeduren habe ich mit Hilfe dieses Forums in vielen Stunden "zusammengebastelt". Sie laufen gut.
Nun sollen diese Prozeduren in einer zentralen Arbeitsmappe (als VBA-Sammlung) gespeichert werden, jedoch von den einzelnen Tabellen (Rechnungen) mittels Schaltflächen aufgerufen werden können. Und hier bin ich auch nach ausgiebiger Recherche in diesem Forum (und externen Quellen) nach 8 Stunden Probieren gescheitert.
Um zu vermeiden, dass die Ursache in den teils aufwändigen Prozeduren liegt, habe ich heute folgende Testumgebung erstellt.
Eine Arbeitsmappe [vba_test.xlsm] in welcher in den Tabellen Tabelle 1> und Tabelle 2> jeweils in Zelle A2 "Testwert 1" bzw. "Testwert 2" eingetragen sind.
In einer zweiten Arbeitsmappe (VBA-Sammlung) [db_vba.xlm] habe ich auf der Ebene Arbeitsmappe folgende Prozedur hinterlegt:
Sub test_proz()
Dim strAnzeigewert As String
strAnzeigewert = ActiveWorkbook.ActiveSheet.Range("A2")
MsgBox strAnzeigewert
End Sub
Wenn ich diese Prozedur aus der Arbeitsmappe [vba_test.xlsm] und einem der beiden Tabellen über das VBA-Projektfenster (heisst das so?) aufrufe, klappt das wunderbar.Sobald ich aber diese Prozedur mittels einer Schaltfläche in der jeweiligen Tabelle aufrufen will, geht's nicht. Ich habe (neben vielen anderen) folgende Prozeduren ausprobiert:
Sub ausfuehren_13()
Application.Run db_vba.xlsm!test_proz
' Ergebnis: Laufzeitfehler 424 Objekt erforderlich
End Sub
Sub ausfuehren_23()
Application.Run "db_vba.xlsm!test_proz"
' Ergebnis: Laufzeitfehler 1004 Anwendungs oder objektorientierter Fehler
End Sub
Sub ausfuehren_33()
Application.Run "'db_vba.xlsm'!test_proz'"
' Ergebnis: Laufzeitfehler 1004 Anwendungs oder objektorientierter Fehler
End Sub
Sub ausfuehren_43()
Application.Run "D:\temp\Sandbox\de_vba.xlsm!test_proz'"
' Ergebnis: Laufzeitfehler 1004 Anwendungs oder objektorientierter Fehler
End Sub
Was mache ich falsch?
Die bessere/elegantere Lösung wäre wohl, die zentrale Prozedur als ein Add-In zu speichern und dieses in den jeweiligen Arbeitsmappen einbinden. Aber aus Lerngründen möchte ich erst mal den Aufruf der Prozedur aus einer externen Arbeitsmappe zustande kriegen.
PS: Macht es einen Unterschied, ob ich die auszuführende Prozedur in der "VBA-Sammlung" auf Ebene Arbeitsmappe oder Tabelle hinterlege?
Danke im Voraus an alle, welche sich dieser Problemstellung annehmen und mit Tipps geben.
Bleibt Gesund !
Martin