Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand

Forumthread: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand

copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 17:13:53
RoWaLo
Hallo an die helfenden VBA und Excel Experten.

Ich habe in einer Testdatei endlich ein Makro fertig gestellt und das läuft jetzt so wie ich es möchte. Soweit gut!

Mein nächstes Vorhaben ist jetzt, dass ich -
den Code aus dem VBA Bereich “diese Arbeitsmappe“ und die UserForm1 und UserForm2 inkl. Code
in ca. 20 andere Arbeitsmappen übertragen (kopieren) möchte, damit er dort in gleicher Weise verwandt werden kann..

Bisher kenne ich nur den Weg, wie man es für jede der ca. 20 A-Mappen durch einzelnes kopieren machen
müsste, in dem man das “Original“ und die Ziel A-mappe öffnet, das VBA Fenster öffnet und alles einzeln kopiert.

Meine Frage: Gibt es auch eine einfachere Art mit weniger Aufwand?

Oder wie könnte man vielleicht den Code und die UserForms irgendwie auslagern und die ca.
20 Arbeitsmappen greifen irgendwie auf das “Ausgelagerte“ zu, wäre das irgendwie weniger Aufwand?

Danke für alle hilfreichen Antworten, verständlich für einen VBA Anfänger (nicht Experten).
VG Roman
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 17:33:43
daniel
Hi
du kannst im VBA-Fenster Module exportieren und Importieren.
mit reinem Code funktioniert das ganz gut, bei Userformen habe ich das etwas schwieriger in Erinnerung.
Sind die Mappen alle gleich aufgebaut?
Hast du nur allgemeine Module oder gibt es auch Code in den Tabellenblattmodulen?
hast du aufwendige Excel-Namen erstellt?

Ich würde wahrscheinlich so vorgehen:
1. eine Vorlage erstellen, die die Userformen und den Code enthält
2. eine weitere Datei anlegen, welches das Makro zum Übertragen enthält sowie die Liste aller Dateien, die das Makro bekommen sollen.
3. das Makro macht dann folgendes
- leere Vorlage öffen
- Datei öffnen, die das Makro bekommen soll
- Inhalte von der Datei ohne Makro in die Datei mit Makro kopieren
- Vorlagendatei jetzt mit dem Namen der anderen Datei speichern
- beide Dateien schließen
- Vorgang mit nächste Datei wiederholen.

das Ganze sollte sich recht einfach mit VBA umsetzen lassen.
Inhalte zwischen zwei Dateien zu kopieren ist einfacher, als Makros und Codes .

Gruß Daniel
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 19:40:03
RoWaLo
Hallo Daniel
Danke für deine Antwort.
zu deinen Fragen
Sind die Mappen alle gleich aufgebaut? ......................................................................................Ja
Hast du nur allgemeine Module................................................................ Code nur in "Diesem Arbeitsblatt" und in "Userform1" und "UserForm2"
oder gibt es auch Code in den Tabellenblattmodulen? .......................................................Nein
hast du aufwendige Excel-Namen erstellt? ................................................................................Nein

Ich würde wahrscheinlich so vorgehen:
1. eine Vorlage erstellen, die die Userformen und den Code enthält .............................Das ist ja meine erstellte Test Datei
2. eine weitere Datei anlegen, welches das Makro zum Übertragen
enthält ....................................................................................................................................................OK sagen wir die Datei hat den Namen "Übertragen-per-Makro"
sowie die Liste aller Dateien, die das Makro bekommen sollen. ................................ Ok verstanden ...... "Datei A, Datei B Datei C, ........ Datei T"
3. das Makro macht dann folgendes
- leere Vorlage öffen .................................................................................. Was meist du mit leere Vorlage .... die Vorlage ist doch meine Test datei
..................................................................................................................................................................................................... da ist doch das drin was ich kopieren will
- Datei öffnen, die das Makro bekommen soll .................................................................Ok verstanden ..... "Datei A, Datei B Datei C, ........ Datei T"
- Inhalte von der Datei ohne Makro in die Datei mit Makro kopieren .................Verstehe ich nicht??? Ich soll jetzt meine Vorlage überschreiben?
- Vorlagendatei jetzt mit dem Namen der anderen Datei speichern ...................... Ok Verstanden
- beide Dateien schließen .......................................................................................................... Ok Verstanden
- Vorgang mit nächste Datei wiederholen. .......................................................................... Ok Verstanden

Wenn ich das richtig verstehe, drehst du den Weg um ? -- also du kopierst nicht den Code von der Vorlage in die Anwender Dateien
...............sondern du kopierst die Excel Tabelle von Date A, B, C .....T in die Test-Datei, in der der Code und die Userforms bereits enthalten sind?
und speichst (überschreibst) die dann über dei Datei A, B, C drüber? Habe ich das richtig verstanden? ..... ODER?
Beste Grüße Roman

Userbild

Userbild



Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 20:00:42
daniel
"Wenn ich das richtig verstehe, drehst du den Weg um ? -- also du kopierst nicht den Code von der Vorlage in die Anwender Dateien
...............sondern du kopierst die Excel Tabelle von Date A, B, C .....T in die Test-Datei, in der der Code und die Userforms bereits enthalten sind?
und speichst (überschreibst) die dann über dei Datei A, B, C drüber? Habe ich das richtig verstanden? ..... ODER?"


ja, korrekt erkannt, genau so,
es ist viel einfacher, Daten von Datei A nach Datei B zu übertragen, denn dafür hast du passende Befehle, die du mit dem Makrorecorder aufzeichnen kannst.
Vermutlich reicht es aus, die Tabellenblätter zu verschieben.
Prinzipiell kann man auch Code übertragen, aber das ist viel aufwendiger und müsste explizit und ohne Recorderunterstützung programmiert werden, ist also eher was für erfahrene Programmierer, während das Verschieben von Daten auch von Anfängern programmiert werden kann. Das Ergebnis ist hinterher das gleiche.

Das Problem ist, dass du dir hier die leere Vorlagendatei mit Inhalten füllst, die du wieder rauslöschen solltest, bevor du das Spiel mit der nächsten Datendatei wiederholst.
Statt die eingefügten Inhalte wieder zu löschen, ist es einfacher, die Datei ohne speichern zu schließen und erneut zu öffnen.
Das muss nur halt über eine weitere Datei gesteuert werden, daher die dritte Makrodatei.

Gruß Daniel
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
22.09.2024 09:43:10
RoWaLo
Hallo Daniel
Dein Vorschlag den umgekehrten Weg zu wählen, ist glaube ich wirklich der bessere. Danke für die Idee.

Für die anderen die hier mitlesen.
Es geht bei der "Geschichte" um ein Wissenstest mit verschiedenen Schwierigkeitsstufen ... Das läuft mitlerweile!!
bestehend aus einer Deutschlandkarte mit Punkten (Städten oder Flüssen etc. ) und Zahlen daneben
(eigentlich 2 auswählbare Karten, eine mit Flüssen und deren Namen + Punkten und eine nur die Punkte + Zahlen)
und zum anderen aus der Excel Datei mit einer Spalte mit den Zahlen und daneben eine Spalte wo die zugeghörigen Namen
"eingetragen" werden sollen, ausgewählt aus einer Daten-Liste die neben der Eingabe Zelle geöffnet werden kann.
Also bisher ca. 20+ Datei Pärchen - und nicht eine Datei mit 20 Tabellenblätter wo zu jedem Tabellenblatt die zugeörige Karte eingeblendet
werden müsste. Das mit dem Aufrufen der Karten abhängig von den gewählten Tabellenblättern wäre wahrscheinlich etwas schwieriger.

Ich weiß, so was gibts in anderer Form über graphischer Auswahl und multiple Auswahl schon aber vielleicht nicht in der Tiefe.
Aber egal ich wollte es einfach mal auf meine Art verwirklichen.
Gruß Roman
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 18:21:56
Onur
Wenn du DENSELBEN Code in gleicher Weise in 20 verschiedenen Sheets benutzen willst, brauchst du doch nicht 20 Codes sondern nur einen. DAS ist Programmieren.
Du kaufst doch auch nicht 20 Akkuschrauber, wenn du 20 Vogelhäuschen zusammenschrauben willst. :)
Du musst nur den Code so umschreiben, dass er mit allen Blättern arbeiten kann (wenn, wie du sagst, alle Blätter gleich aufgebaut sind).
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 18:28:24
volti
Hi onur,

20 Dateien, nicht zwanzig Arbeitsblätter.

Obwohl das mit den zwanzig Dateien würde ich mir auch überlegen, ob das Spiel nicht besser mit einer Datei gespielt werden könnte.

Gruß
KH
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 18:31:35
Onur
OOOPS! Wer lesen kann....
In diesem Fall würde ich die 20 Dateien mittels EINER externen Datei öffnen und auswerten (oder was auch immer).
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
22.09.2024 09:10:55
RoWaLo
hallo Karl Heinz
Danke für deine Antwort und die Idee alles in einer Datei zu stecken, dann müsste ich das Makro aber wieder ändern und die Aufrufe der entsprechenden Karten vom gewählten Tabellenblatt abhängig machen und nicht wie jetzt vom Aufruf der Excel Datei.
Mal schauen was ich mache.
Gruß Roman
Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 18:27:13
jojogar
Hallo,
es ist auch möglich, ein sogenanntes AddIn zu erstellen, in dem der VBA Code und UserForms enthalten sind.
Das AddIn wird mit dem AddIn-Manager einmalig in Excel installiert und stellt seine Funktionen für alle Arbeitsmappen bereit.
Ob das sinnvoll ist hängt vom Einzelfall ab.
Etliche AddIns sind in Excel bereits vorinstalliert und können im AddIn-.Manager aktiviert bzw. deaktiviert werden.


Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 20:18:50
Yal
Moin,

es geht. Aber wie gut...

Einfacher wäre die Dateien zu öffnen und die Modul per Drag-n-drop zwischen die "Projekte" zu übertragen. Geht leider nicht für den "DieseArbeitsmappe"-Modul.

Per VBA, frei nach https://stackoverflow.com/questions/44479289/copy-userform-to-another-workbook :
Sub AlleDatei_behandeln()

Dim WB As Workbook
Dim Datei As String
Dim Comp
Dim Fallschirm As Long 'Retter gegen endlose Loop-Schleifen
Const cDateiVerz = "C:\HerberForum\Dateiliste\"
Const cCompVerz = "C:\HerberForum\temp\"

Datei = Dir(cDateiVerz & "*.xlsx")

Do While Datei > "" And Fallschirm 10000
Fallschirm = Fallschirm + 1
'Datei öffnen
Set WB = Workbooks.Open(cDateiVerz & Datei)
'Components importieren
For Each Comp In Array("DieseArbeitsmappe.mdl", "Formular1.frm")
WB.VBProject.VBComponents.Import Filename:=cCompVerz & Comp
Next
'Speichern, schliessen
WB.SaveAs Filename:=Replace(WB.Name, "xlsx", "xlsm"), FileFormat:=xlOpenXMLWorkbookMacroEnabled
WB.Close False
Datei = Dir()
Loop
End Sub

Die "Components" müssen vorher in cCompVerz exportiert werden. Anpassung an Pfad und Component-Dateiname vornehmen!

Nicht getestet. ich weiss nicht, wie es sich mit Modul von Std-Element, wie "DieseArbeitsmappe". Dann muss man mit CodeModule.InsertLines arbeiten (Siehe Bibliothek "Microsoft Visual Basic for Applications Extensibility 5.3")

VG
Yal


Anzeige
AW: copy Makro Code in ca. 20 Arbe-mappen mit geringstem Aufwand
19.09.2024 20:34:46
daniel
So eine Aufgabenstellung hatte ich mal vor längerer Zeit (Excel 2010)
Mit einfachen Modulen hat der Import/Export auch gut geklappt, aber das ist ja auch nur einfacher Text.
Mit den Userformen gabs aber immer Probleme. Da steckt ja auch viel mehr dahinter als der einfache Code. Das war immer "buggy".
Daher habe ich dann irgendwann für einen Update immer Daten aus der alten Datei in die neue gezogen.
Kann natürlich sein, dass MS das mittlerweile im Griff hat, aber ich würde da nicht drauf wetten.

Mit Excel 2010 wäre es auch möglich gewesen, die Makros und die Userformen so zu gestalten, dass man diese in den anderen Dateien verwenden kann, sobald beide Dateien geöffnet sind. Aber mit dem neuen Fensterkonzept ist es nicht mehr so einfach, mit der Userform aus Datei A in der der Datei B zu arbeiten.

Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige