Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: bhommi am April 24, 2022, 09:16:56

Titel: [gelöst] Aus Access ein VBA-Skript in Excel starten
Beitrag von: bhommi am April 24, 2022, 09:16:56
Hallo zusammen,

ich habe eine Excel-Datei in der ein geschütztes VBA-Skript enthalten ist.
Selbst wenn ich es mit (illegalen) Methoden entsperre, kann ich es auf Grund des Umfangs nicht einfach in Access nachbauen. Daher würde ich gerne das Skript aus Access heraus starten.

Hintergrund ist, dass ich bisher zig Kopien dieser Exceldatei erstellen muss, da immer unterschiedliche Daten enthalten sind. Das würde ich gerne optimieren.
Die Datenhaltung aus Access nach Excel zu bekommen ist kein Problem. Das habe ich schon erfolgreich verprobt. Es muss halt dann im Anschluss das Skript laufen.

Excel zu öffnen ist ja ohne Probleme zu machen, aber was dann?

Sub test()
 
    Dim app As Excel.Application
    Dim wbk As Excel.Workbook
    Set app = New Excel.Application
    Set wbk = app.Workbooks.Open("pfad....xlsm")
   
wbk. ..... und jetzt?

    wbk.Close
    Set app = Nothing
End Sub

Hat jemand eine Idee, was ich da machen muss?
Geht das überhaupt?

Danke euch!

Gruß
Björn
Titel: Re: Aus Access ein VBA-Skript in Excel starten
Beitrag von: PhilS am April 24, 2022, 11:38:31
Zitat von: bhommi am April 24, 2022, 09:16:56ich habe eine Excel-Datei in der ein geschütztes VBA-Skript enthalten ist.
Selbst wenn ich es mit (illegalen) Methoden entsperre, kann ich es auf Grund des Umfangs nicht einfach in Access nachbauen. Daher würde ich gerne das Skript aus Access heraus starten.

Hintergrund ist, dass ich bisher zig Kopien dieser Exceldatei erstellen muss, da immer unterschiedliche Daten enthalten sind. Das würde ich gerne optimieren.

Der Umfang des Excel-VBA-Codes ist kein guter Grund. Im wesentlichen kannst du den Code kopieren und passt dann nur die Referenzen auf Application, Workbook, Worksheet etc. an.
Das wäre aus meiner Sicht der bessere Ansatz, insbesondere wenn die Excel-Datei mit verschiedenen Daten immer wieder neu generiert wird. Dann hast du die Logik an einer zentralen Stelle und nicht dupliziert über X verschiedene Dateien.

Dein Ansatz, wenn auch IMO suboptimal, geht aber auch:

Sub test()
 
    Dim app As Excel.Application
    Dim wbk As Excel.Workbook
    Set app = New Excel.Application
    Set wbk = app.Workbooks.Open("pfad....xlsm")

    app.Run "NameDeinerMakroSub"

    wbk.Close
    Set app = Nothing
End Sub
Titel: Re: Aus Access ein VBA-Skript in Excel starten
Beitrag von: bhommi am April 25, 2022, 07:37:11
Zitat von: PhilS am April 24, 2022, 11:38:31Der Umfang des Excel-VBA-Codes ist kein guter Grund. Im wesentlichen kannst du den Code kopieren und passt dann nur die Referenzen auf Application, Workbook, Worksheet etc. an.
Das wäre aus meiner Sicht der bessere Ansatz, insbesondere wenn die Excel-Datei mit verschiedenen Daten immer wieder neu generiert wird. Dann hast du die Logik an einer zentralen Stelle und nicht dupliziert über X verschiedene Dateien.

Ich stimme dir grundsätzlich zu. Die Excel-Datei besteht jedoch aus zig Modulen und Klassenmodulen, daher fällt es mir schwer, diese eben mal nach Access zu übertragen.

Problem ist, dass es kein Startmakro gibt, sondern ein ActiveX-CommandButton das Skript aufruft.
Daher funzt deine Ergänzung leider so direkt nicht. Es kommt dann der Fehlerhinweis "1004 Das Makro 'xxx' kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar, oder alle Makros wurden deaktiviert.".
Dies kann ich jedoch mit der Version ohne Code-Schutz umgehen, wenn auch nicht ganz sauber ;-) Aber immerhin würde das funktionieren, habe es getestet.

Ich weiß, schön ist anders, aber für den ersten Moment könnte es reichen.
Danke daher soweit für deine Idee und Rückmeldung.

Falls noch jemand ne Idee hat, dann gerne, ansonsten werde ich es Morgen auf "gelöst" setzen.

Gruß
Björn
Titel: Re: Aus Access ein VBA-Skript in Excel starten
Beitrag von: Beaker s.a. am April 25, 2022, 22:04:46
Zitataber für den ersten Moment könnte es reichen.
Deiner Signatur nach hast du ja Zeit genug eine bessere Lösung zu finden.
Titel: Re: Aus Access ein VBA-Skript in Excel starten
Beitrag von: ebs17 am April 26, 2022, 08:30:59
Zitatein geschütztes VBA-Skript
...
besteht jedoch aus zig Modulen und Klassenmodulen
Gelobt sei die sprachliche Präzision.

ZitatHintergrund ist, dass ich bisher zig Kopien dieser Exceldatei erstellen muss, da immer unterschiedliche Daten enthalten sind
Warum soll bei einer DateiERSTELLUNG ein Codestart nötig sein?

Man könnte eine Vorlage ohne Daten verwenden. Diese kann man einfach vervielfältigen, und dann die Kopien mit Daten zielgerichtet versorgen.

Oder Du wendest Dich an den Entwickler. Bei der angedeuteten Vielfalt wäre es denkbar, dass da eine Eigenvervielfältigung umsetzbar ist.
Titel: Re: [gelöst] Aus Access ein VBA-Skript in Excel starten
Beitrag von: bhommi am April 26, 2022, 19:50:36
Danke für die Rückmeldungen.
Mit dem Entwickler zu sprechen ist wie mir einer Wand.
Ist auch egal, mir ist erstmal geholfen.
Daher danke!