Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makros in viele Dateien übertragen

Makros in viele Dateien übertragen
06.06.2016 14:01:30
Katja
Hallo zusammen,
ich möchte ein neu entwickeltes Makro in ca. 1000 Dateien hineinkopieren bzw. das alte Makro ersetzen.
Geht das auch einfach und schnell vielleicht mit einem Makro oder muss ich das wirklich alles per Hand machen?
LG, Katja

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros in viele Dateien übertragen
06.06.2016 14:33:43
Daniel
Hi
kommt darauf an, wie tief das Makro mit der Datei verstrickt ist.
befindet sich der Code in einem allgemeinen Modul, könnstet du so vorgehen:
1. den neuen Quelltext des Moduls als .bas - Datei exportieren
2. in den anzupassenden Dateien das entsprechende Modul löschen und die gespeicherte .Bas-Datei importieren.
das sollte auch relativ einfach als Makro zu programmieren sein.
erstreckt sich der zu ändernde Code jedoch über Tabellenblattmodule oder benötgit sogar neue Steuerelemente, könnte es komplizierter werden.
Alternativ solle aber folgendes umsetzbar sein:
1. erstelle die Datei mit dem neuen Code als leere Vorlage
2. öffne die Dateien nacheinander und kopiere die Inhalte in die Vorlagendatei, speichere dann die Vorlage unter dem Namen der geöffneten Datei ab.
auch das sollte ich recht einfach in VBA programmieren lassen.
Gruß Daniel

Anzeige
AW: Makros in viele Dateien übertragen
06.06.2016 16:21:24
Katja
Hallo Daniel,
die Alternative wäre am Besten. Aber wie würde so ein Code aussehen? Ich habe keine Ahnung von der VBA-Programmierung. Wäre schön wenn du mir helfen könntest.
Gruß Katja

EVtl. als zentrales AddIn speichern ?
06.06.2016 15:13:22
NoNet
Hallo Katja,
ein Makro in viele Dateien zu übertragen ist zwar grundsätzlich möglich, allerdings klingt das für mich nach einem falschen Ansatz !
Evtl. benötigst Du ein zentrales Makro (in einem AddIn), das Du asu jeder MAppe heraus aufrufen kannst ?
Welche Aufgabe hat denn das Makro ?
Salut, NoNet

Anzeige
AW: EVtl. als zentrales AddIn speichern ?
06.06.2016 15:19:50
Katja
Hallo NoNet,
das Makro hat die Aufgabe zu Prüfen ob alle benötigten Spalten ausgefüllt wurden und dann alle ausgefüllten Spalten zu schützen.
Lg, Katja

AW: Makros in viele Dateien übertragen
06.06.2016 20:50:42
Piet
Hallo Katja,
ich sehe das es schon viele Lösungsvorschlaege gibt, gehe dann nicht mehr in den Thread hinein.
Zunaechst einmal schliesse ich mit dem Vorschlag der anderen an, ein Zentrales Makro anlegen ist sinnvoller.
Sollte dir das nicht möglich sein, und du Problem bei der Umsetzung habe, würde ich gerne helfen.
Eine Aufage in dieser Grössenordnung und zu diesem Thema habe ich bisher noch nie übernommen.
Aber gleich 1000 Dateien Öffnen und ein Makro auswechseln ist bestimmt keine leichte Aufgabe.
Reitzt mich nur von der Aufgabe her. Vielleicht hast du die Aufgabe aber schon selbst gelöst?
mfg Piet

Anzeige
AW: Makros in viele Dateien übertragen
07.06.2016 08:07:51
Katja
Guten Morgen Piet,
nein die Aufgabe habe ich noch nicht gelöst. Ich habe überhaupt keine Ahnung von Zentralen Makros oder AddIn. Habe zwar versucht ein Makro aufzuzeichnen aber bei dem Code verstehe ich nur Bahnhof.
Excel macht mir keine Schwierigkeiten aber VBA ist für mich ein Buch mit sieben Siegeln.
Ich würde mich über Hilfe sehr freuen.
LG, Katja

AW: Makros in viele Dateien übertragen
07.06.2016 15:37:49
Piet
Hallo Katja,
habe deine Antwort gelesen, bin bereit zu helfen, bearbeite aber noch 2 Threads.
Gib mir bitte etwas Zeit, ein fertiges Makro dazu gibt es meines Wissen nicht.
Wenn ich dir antworte stelle ich den Thread Offen unter "Noch Offen".
Solange du dort deinen Thread nicht siehtst bin ich noch nicht fertig.
Du brauchst nicht antworten. Wir sehen uns ...
mfg Piet

Anzeige
AW: Makros in viele Dateien übertragen
08.06.2016 02:51:04
Piet
Hallo Katja,
ich habe einige Überlegungen angestellt und für dich einen 1. Entwurf gemacht.
Unklar ist mir im Augenblick noch wo sich das Makro befindet? In einer Tabelle
oder in einem normalen Modulblatt? Deswegen bin ich mir nicht sicher ob mein
Beispiel auf Anhieb lauffaehig ist. Schau es dir einfach mal an.
Mit dieser Datei kannst du jeweils einen Ordner auflisten und alle Dateien bearbeiten.
In der Tabelle 1 findest du Spalte K, wo du den Text des neuen Makros reinschreiben kannst.
Es geht auch das neue Makro in das Modulblatt "Neues Makro" schreiben und von dort kopieren.
Von wo du kopieren willst kannst du per OptionButton auswaehlen. Inclusive "Auto-Tausch".
Zum Probieren bis es klappt kannst du eine Test Datei einzeln tauschen. Beim Auto-Tausch
wird das Makro solange wiederholt, bis die letzte Zeile mit einer Datei erreicht wurde.
Austauschen kannst du zur Zeit nur im "Modul 2". Den Text kann man aber leicht aendern.
Probier mal aus ob dir das hilft, wenn das Makro im Tabellenblatt steht müssen wir das
aendern. Wichtig ist mir ob das Öffnen und schliessen einwandfrei funktioniert.
Zu deiner Sicherheit zuerst bitte nicht mit Originaldateien, sondern 2-3 Test Dateien.
Den Pfad und Unter-Ordner Namen kannst du ja in die Zellen D1 und D2 leicht eingeben.
Ich bin gespannt auf deine Rückmeldung. Und hoffe das wir der Lösung naeher kommen.
mfg Piet
https://www.herber.de/bbs/user/106073.xls

Anzeige
AW: Makros in viele Dateien übertragen
08.06.2016 13:52:15
Katja
Hallo Piet,
das ging ja schnell.
Aber wie du bereits vermutet hast, läuft es noch nicht einwandfrei.
Also:
Ich habe meinen Pfad und den Ordner eingetragen. Click auf "Datei-Liste" und siehe da, es werden die 3 enthaltenen Dateien aufgelistet.
Click auf Dateinamen und auf "Makro tauschen". Die Datei geht auf, aber nichts passiert und in deiner Liste steht der Eintrag "Open Error". Dabei ist es auch egal, was ich anklicke Tabelle oder Modul. Auch mit "Auto tauschen" passiert nichts.
Ich habe meinen alten und neuen Code in einem Modul stehen. Zusätzlich möchte ich auch noch einen Code in "Diese Arbeitmappe" kopieren/einsetzen, diese war bisher leer.
Gibt es Probleme wegen dem Blattschutz oder wenn die Makros beim Öffnen der Datei erst aktiviert werden müssen? Wie erkennt der Code eigentlich die Buttons?
Könntest du deinen Code bitte etwas ausführlicher Übersetzten/Kommentieren? Einige Befehle kann ich mir zusammen reimen, aber bei einigen habe ich keinen blassen Schimmer, was du damit machst. Villeicht verstehe/lerne ich diese Sprache ja dadurch ein wenig.
Danke für deine Bemühungen.
LG, Katja

Anzeige
AW: Makros in viele Dateien übertragen
08.06.2016 17:03:50
Piet
Hallo Katja,
du hattest ;Glück das ich vor meinem Abflug noch mal in diesen letzten Thread reinschaute.
Im Prinzip scheint das Programm doch zu funktionieren, bis auf einige wichtige Details.
Deiner Beschreibung nach werden Dateien geöffnet, aber der Autausch klappt noch nicht.
Zum Programm und den Details:
Die Module 3 + 4, Datei auflisten und Datei öffnen funktionieren offenbar. Sehr gut.
Dein Problem liegt im Modul tauschen, und das musst du selbst VBA maessig "anpassen"
Bei der Entwicklung fand der Austausch im "Modul2" statt, bei dir wird es anders heissen!!
Das heisst, du must diesen Code Teil auf deine Dateien und ihre Module Namen anpassen.
zum VBA Verstaendis, zum verstehen: - Modul4_Öffnen
Modul4_Öffnen
'Makro in ext. Modul2 tauschen
flg = Empty  'Flag löschen
Call Makro_InModul2_tauschen
'bei "Ok" Datum + "OK" notieren
If flg = Empty Then
.Range(AcAdr).Offset(0, 2) = Now
.Range(AcAdr).Offset(0, 3) = "  OK"
ElseIf flg = "No Txt" Then
'Fehler Meldung  "nicht getausch"
.Range(AcAdr).Offset(0, 3) = "  Nein"
Exit Sub
End If
'Datei immer schliessen und speichern
On Error GoTo CloseErr
Workbooks(Datei).Close SaveChanges:=True

Anzeige
AW: Makros in viele Dateien übertragen
08.06.2016 17:15:30
Piet
Hallo Katja,
Sorry vor lauter Stress zu früh abgeschickt.
du hattest ;Glück das ich vor meinem Abflug noch mal in diesen letzten Thread reinschaute.
Im Prinzip scheint das Programm doch zu funktionieren, bis auf einige wichtige Details.
Deiner Beschreibung nach werden Dateien geöffnet, aber der Autausch klappt noch nicht.
Zum Programm und den Details:
Die Module 3 + 4, Datei auflisten und Datei öffnen funktionieren offenbar. Sehr gut.
Dein Problem liegt im Modul tauschen, und das musst du selbst VBA maessig "anpassen"
Bei der Entwicklung fand der Austausch im "Modul2" statt, bei dir wird es anders heissen!!
Das heisst, du must diesen Code Teil auf deine Dateien und ihre Module Namen anpassen.
zum VBA Verstaendis, zum verstehen: - Modul4_Öffnen
İn diesem Programm wird ein weiteres makro per Call aufgerufen
Ist das flg Flag Empty war alles Okay, sonst soll Fehlermeldung erfolgen.
Im Fehlerfall wird die Datei -nicht geschlossen- wegen -Exit Sub-
Modul4_Öffnen
'Makro in ext. Modul2 tauschen
flg = Empty  'Flag löschen
Call Makro_InModul2_tauschen
'bei "Ok" Datum + "OK" notieren
If flg = Empty Then
.Range(AcAdr).Offset(0, 2) = Now
.Range(AcAdr).Offset(0, 3) = "  OK"
ElseIf flg = "No Txt" Then
'Fehler Meldung  "nicht getausch"
.Range(AcAdr).Offset(0, 3) = "  Nein"
Exit Sub
End If
'Datei immer schliessen und speichern
On Error GoTo CloseErr
Workbooks(Datei).Close SaveChanges:=True
Modul5_TAUSCHEN
Der eigentliche Austausch findet hier statt, in diesem Modul
Darauf musst du dich konzentrieren. Die ersten Anweisungen
miT sCode dienen nur zum Laden eines Strings für den Makro Code.
Der eigentliche Austausch findet hier statt, an dieser Stelle:
Sub Makro_InModul2_tauschen()
'Makro in geöffneter Mappe austauschen  (Modul2)
Set vbc = ActiveWorkbook.VBProject.VBComponents("Modul2")
vbc.codemodule.deletelines 1, vbc.codemodule.CountOfLines
vbc.codemodule.AddFromString sCode
Dort siehtst du eine Set Anweisung mit der VBA Komponente "Modul2"
Also findet der Austausch im Modulblatt 2 statt, und nur dort!
Wenn es kein "Modul2" gibt, Mist, da habe ich - "On Error" vergessen!
In der Set Anweisung must du selbst festlegen wie dein Modulblatt heisst.
Wenn es eine Tabelle oder das Workbook ist probiere diesen Namen aus.
Bitte aendere die Set Anweisung durch den nachgestellten Fehler Befehl!
   'Makro in geöffneter Mappe austauschen  (Modul2)
Set vbc = ActiveWorkbook.VBProject.VBComponents("Modul2")
If vbc Is Nothing Then flg = "No Txt": Exit Sub
vbc.codemodule.deletelines 1, vbc.codemodule.CountOfLines
vbc.codemodule.AddFromString sCode
Wenn es noch Probleme gibt hoffe ich das die Kollegen dir weiterhelfen.
Ich muss zum Flieger, bin in Eile. Viel Glück und noch ein Tipp. Es gibt
ein gutes Archiv wo du Makro löschen und tauschen recherchieren kannst.
Ich habe es auch benutzt, ein Teil dieses Codes stammt aus dem Archiv.
In diesem Sinne ich muss los ....
mfg Piet
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige