Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1776to1780
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

VBA-Code Module vergleichen

VBA-Code Module vergleichen
26.08.2020 21:13:26
Pepi
Hallo zusammen
Ich habe in meinem VBA-Projekt (Makro-VBA-Code-ändern.xlsm + Personal.xlsb) je ein Modul mit dem Namen "z_Tools"
Jetzt möchte ich "z_Tool" von Personal.xlsb nach Makro-VBA-Code-ändern.xlsm kopieren, wenn es neuer ist (Datum steht auf 1. Zeile!
Userbild
Ich habe folgendes Makro gefunden
Sub Test_Herber()
Dim i&, z&, sLin, sTmp$, oVBE As Object
For i = 1 To ThisWorkbook.VBProject.VBE.CodePanes.Count
Set oVBE = ThisWorkbook.VBProject.VBE.CodePanes(i).CodeModule
sTmp = sTmp & Format(i, "00.) ") & oVBE & vbLf
Next i
MsgBox sTmp 'ThisWorkbook.VBProject.VBE.CodePanes(i).CodeModule
End 

Sub  'Test_Herber()
Ich dachte, dass es alle Module einliest "oVBE" - gemäss Screenshoot aber leider nicht!
Auch habe ich nicht rausgefunden, wie man den ProjektNamen (zB Personal.xlsb) ermittelt, damit  _
ich weiss aus welchem Projekt "z_Tools" ist.
Hat jemand einen Tipp, wie ich herausfinden kann, welches Modul neuer ist und wie ich es  _
kopieren kann?
Einfaches Problem, doch schwierig zu erklären - Sorry - vielen Dank für Eure Hilfe
Pepi



		

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code Module vergleichen
27.08.2020 04:05:09
fcs
Hallo Pepi,
nachfolgend ein entsprechendes Makro.
Beispiel-Datei mit der ich getestet hab.
https://www.herber.de/bbs/user/139857.xlsm
LG
Franz
Sub Copy_Modul_z_Tool()
Dim sLin, sTmp$
Dim oVBE As Object ' VBE
Dim varCodePane As Object ' CodePane
Dim oVBComponent As Object ' VBComponent
Dim DatumPersonal As Date, Datum_Me As Date
On Error GoTo Fehler
With Application.Workbooks("PERSONAL.XLSB").VBProject
Set oVBComponent = .VBComponents("z_tools")
With oVBComponent.CodeModule
sTmp = .Lines(1, 1) '1. Zeile im Code-Modul
sLin = .Lines(1, .CountOfLines)
End With
DatumPersonal = CDate(Trim(Mid(sTmp, 2)))
End With
With ThisWorkbook.VBProject 'Application.Workbooks("Makro-VBA-Code-ändern.xlsm")
Set oVBComponent = .VBComponents("z_tools")
sTmp = oVBComponent.CodeModule.Lines(1, 1) '1. Zeile im Code-Modul
Datum_Me = CDate(Trim(Mid(sTmp, 2)))
End With
If Datum_Me 

Anzeige
AW: VBA-Code Module vergleichen
27.08.2020 19:59:36
Pepi
Hallo Franz
ganz lieben Dank für deine grosse Arbeit, mir ein vollständiges Programm zu liefern - du hast mein Anliegen genau erfasst.
Leider habe ich Fehlermeldungen, obwohl ich den Haken im VBA-Editor gesetzt haben
zB
Set wkb(2) = Application.Workbooks("Makro-VBA-Code-ändern.xlsm")
Fehler: Index ausserhalb gültiger Bereich
sTmp = sTmp & vbLf & wkb1.Name & vbLf
Fehler: Objektvariable nicht festgelegt
vielleicht finde ich es noch raus, waran es liegt - bei dir hat es offenbar funktioniert
vielleicht hast du noch für mich noch einen Tipp
trotzdem vielen Dank
mfg Pepi
Anzeige
AW: VBA-Code Module vergleichen
27.08.2020 20:44:26
fcs
Hallo Pepi,
in der Zeile
Set wkb(2) = Application.Workbooks("Makro-VBA-Code-ändern.xlsm")

musst du auf die korrekte Schreibweise des Dateinamens achten. bzw. die Datei muss geöffnet sein.
Wenn das Makro in der Datei gespeichert ist, in der das Module "z_Tools" aktualisiert werden soll, dann kannst du auch folgende Anweisung verwenden:
  Set wkb(2) = ThisWorkbook

Wenn du nur die VBA-Module in der aktiven Arbeitsmappe anzeigen möchtest,dann etwa so:
Sub VBA_Module_Activeworkbook()
'Liste die VBA-Module in beiden Dateien
Dim i&, sTmp$
Dim oVBE As Object ' VBE
Dim varCodePane As Object ' CodePane
Dim oVBComponent As Object ' VBComponent
Dim wkb1 As Workbook, varType As Variant 'vbext_componenttype
Set wkb1 = ActiveWorkbook
i = 0
sTmp = sTmp & vbLf & wkb1.Name & vbLf
For Each oVBComponent In wkb1.VBProject.VBComponents
With oVBComponent
varType = .Type
i = i + 1
sTmp = sTmp & Format(i, "00"".) """) & .Name & " - Type: " & varType & vbLf
Select Case varType
Case 1 'vbext_ct_StdModule  _ Standard-Module
Case 2 'vbext_ct_ClassModule - Klassenmodule
Case 3 'vbext_ct_MSForm - Userformen
Case 11 'vbext_ct_ActiveXDesigner
Case 100 'vbext_ct_Document - DieseArbeitsmappe, Tabellenblätter
End Select
End With
Next
MsgBox sTmp, vbOKOnly, "VBA-Module in aktiver Arbeitsmappe "
End Sub
LG
Franz
Anzeige
AW: VBA-Code Module vergleichen
29.08.2020 14:36:00
Pepi
Danke lieber Franz
Es hat zwar etwas gedauert, aber jetzt laufen beide Makros bestens
PS der Fehler 13 kam vom ausgelesenen Datum - ich musste da den Code noch anpassen, weil ich das Datum anders geschrieben habe als du angenommen (konntest du ja nicht wissen) - supper Makro - jetzt habe ich immer die aktuellen Makros in jeder Mappe
lg Pepi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige