Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA-Module kopieren

396 views
Skip to first unread message

Walter Sieverling

unread,
Jan 15, 2001, 12:10:39 AM1/15/01
to
Hallo NG
Ich habe eine Arbeitsmappe mit mehreren VBA-Modulen erstellt
Von dieser Arbeitsmappe sind mittlerweile 10 Kopien in unterschiedlichen
Directories vorhanden.
Jetzt habe ich diverse Änderungen an den VBA-Modulen vorgenommen.
Gibt es einen "einfachen" Weg, die geänderten VBA-Module in alle anderen
vorhandenen Arbeitsmappen zu kopieren ?
Ich weiß, das es über exportieren/importieren möglich ist, aber der manuelle
Aufwand ist zu hoch und zu fehlerträchtig !
Gruss Walter


Bernd Held

unread,
Jan 15, 2001, 2:37:02 AM1/15/01
to
Hallo Walter,
dazu könntest Du auch ein Makro einsetzen, das in etwa wie folgt aussehen
könnte:


Sub CopyModule()
Dim FromWorkbook As Workbook
Dim ToWorkbook As Workbook


Set FromWorkbook = Workbooks("Mappe1")
Set ToWorkbook = Workbooks("Mappe2")

ToWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name = "Module"


Dim fromModule As CodeModule
Dim toModule As CodeModule


Set fromModule = FromWorkbook.VBProject.VBComponents("Module").CodeModule
Set toModule = ToWorkbook.VBProject.VBComponents("Module").CodeModule


If toModule.CountOfLines > 0 Then toModule.DeleteLines 1, toModule.
CountOfLines


toModule.AddFromString fromModule.Lines(1, fromModule.CountOfLines)


If toModule.CountOfLines > fromModule.CountOfLines Then toModule.DeleteLines
_
(fromModule.CountOfLines + 1), (toModule.CountOfLines - fromModule.
CountOfLines)
End Sub


Viele Grüße
Bernd
----------------------------------------------------
Die MacHero EXCEL Homepage
http://members.aol.com/Machero
Excel-Tipps&Tricks, das Excel-VBA-Kompendium mit 17 Leserstimmen
----------------------------------------------------

--
_____________________________________________________________
NewsGroups Suchen, lesen, schreiben mit http://netnews.web.de

Walter Sieverling

unread,
Jan 15, 2001, 5:06:17 AM1/15/01
to
Hallo Bernd
Funktioniert leider nicht und da ich (noch) kein großer VBA-Könner bin,
bitte ich um Unterstützung :

Hier kommt der Fehler "Benutzerdefinierter Typ nicht definiert"

> Dim fromModule As CodeModule
> Dim toModule As CodeModule

Nach Änderung von CodeModule in Module folgende Fehlermeldung :

Die Methode 'Add' für das Objekt '_VBComponents' ist fehlgeschlagen

grundsätzliche Fragen dazu :
- Muß die Zieldatei geöffnet sein ?
- die Zieldatei hat bereits Module, werden diese überschrieben, oder müssen
sie vorher gelöscht werden ?

Vielen Dank für Deine Unterstützung
( benutze Access97 )

Walter

"Bernd Held" <bh...@debis.com> schrieb im Newsbeitrag
news:3a62...@netnews.web.de...

Walter Sieverling

unread,
Jan 15, 2001, 5:06:41 AM1/15/01
to
Hallo Bernd
Funktioniert leider nicht und da ich (noch) kein großer VBA-Könner bin,
bitte ich um Unterstützung :

Hier kommt der Fehler "Benutzerdefinierter Typ nicht definiert"

> Dim fromModule As CodeModule
> Dim toModule As CodeModule

Nach Änderung von CodeModule in Module folgende Fehlermeldung :

Bernd Held

unread,
Jan 15, 2001, 4:11:01 AM1/15/01
to
Hallo Walter,


Du musst in der Entwicklungsumgebung noch die Bibo:
Microsoft Visual Basic for Applications Extensibility
aktivieren. Dann sollte es eigentlich klappen, oder nicht?


Viele Grüße
Bernd

--

Walter Sieverling

unread,
Jan 15, 2001, 6:39:06 AM1/15/01
to
Hallo Bernd
Eher, oder nicht!, aber mehr als vorher

In der Zieldatei sind schon Module vorhanden, dann hängt das Makro ein Modul
(z.B. Modul12) an und das war es

Makro bleibt in Zeile


Set fromModule =
FromWorkbook.VBProject.VBComponents("Module").CodeModule

stehen mit "Indes außerhalb des gültigen Bereichs"

grundsätzliche Fragen dazu :
- Muß die Zieldatei geöffnet sein ?
- die Zieldatei hat bereits Module, werden diese überschrieben, oder müssen

sie vorher gelöscht werden (wenn ja, kann man das automatisieren)?
Gruss Walter


Walter Sieverling

unread,
Jan 15, 2001, 7:29:04 AM1/15/01
to
Hallo Bernd

Nach ein paar Versuchen jetzt folgendes Ergebnis :
Wenn ich in deinem Makro anstatt "Module" = "Modul1" verwende und vorher
alle Module (Modul1 - Modul11) aus der Zieldatei entfernt wurden, fügt dein
Makro ein Modul1 in die Zieldatei ein und füllt es entsprechend der
Quelldatei(Modul1).
Jetzt fehlt mir nur noch folgendes :
Wie lösche ich alle Module in der Zieldatei
Wie programmiere ich eine Schleife, mit der ich den Namen der Quellmodule
auslese und diesen variabel in den restlichen Code packe

Danke und Grüsse aus Hildesheim
Walter


0 new messages