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