Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Module von einer zur anderen Mappe kopieren

VBA-Module von einer zur anderen Mappe kopieren
10.09.2007 10:11:00
einer
Hallo alle zusammen, hab dieses kleine VBA gefunden, da ich noch nicht so fit in VBA bin, hab ich es nicht so ganz kapiert.
Ich will ein Modul von einer Arbeitsmappe in eine andere Automatisch kopieren.
Dabei ermittelt eine arbeitsmappe die aktuellste Version einer arbeitsmappe und soll in diese anschließend ein Modul kopieren, die es erlaubt ein Arbeitsblatt in eine weitere Arbeitsmappe zu kopieren.
Hoffe es kann mir jemand mit dem untenstehenden beispiel helfen. Da wo " \ " soll ja der dateipfad angegeben werden odeR?
Problem: Wie kann ich Modulblätter von der einen zur anderen Arbeitsmappe kopieren und das neue Blatt benennen?
StandardModule: basMain

Sub CopyModule()
Dim sPath As String
sPath = Application.Path & "\"
ThisWorkbook.VBProject _
.VBComponents("basMain").Export sPath & "basMain.bas"
Workbooks.Add 1
With ActiveWorkbook.VBProject
.VBComponents.Import sPath & "basMain.bas"
.VBComponents("basMain").Name = "MyModul"
End With
Kill sPath & "\basMain.bas"
MsgBox "Modul wurde kopiert!"
End Sub


Gruß Marcel

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Module von einer zur anderen Mappe kopieren
10.09.2007 11:57:25
einer
Hallo Marcel,
der Code, so wie du ihn hast macht folgendes.
1. Aus der Arbeitsmappe in der das Makro "CopyModule" angelegt ist ("ThisWorkbook") wird das Modul mit dem Namen "basMain" in die Datei "basMain.bas" exportiert und in dem Anwendungsverzeichnis von Excel (Application.Path) gespeichert.
2. Es wird eine neue Arbeitsmappe geöffnet.
3. In diese nun aktive Arbeitsmappe wird das zuvor exportierte Modul importiert.
4. Das Modul "basMain" in der neuen Datei wird umbenannt in "MyModul"
5. Die im Schritt 1 erstellte Export-Datei wird wieder gelöscht.
Um es auf deinen Fall anwendbar zu machen, muss der Code etwas modifiziert werden.
Die Namen der beiden Arbeitsmappen und den Namen der Module muss du dann noch festlegen.
Je nach eingestellten Sicherheitsfunktionen (z.B. auch Netzwerkssicherheit), kann es jedoch sein, dass der Code nicht ausgeführt wird, da VBA-Code-Manipulationen als sicherheitsbedenklich eingestuft werden
Gruß
Franz

Sub CopyModule()
Dim sPath As String, wbQuelle As Workbook, wbZiel As Workbook
sPath = Application.Path & "\"
Set wbQuelle = ThisWorkbook 'Arbeitsmappe in der das zu kopierende Modul ist
Set wbZiel = Workbooks("DateiXYZ.xls") 'Arbeitsmappe in die das Modul kopiert werden soll
wbQuelle.VBProject _
.VBComponents("basMain").Export sPath & "basMain.bas"
With wbZiel.VBProject
.VBComponents.Import sPath & "basMain.bas"
.VBComponents("basMain").Name = "MyModul"
End With
Kill sPath & "\basMain.bas"
MsgBox "Modul wurde kopiert!"
End Sub


Anzeige
AW: VBA-Module von einer zur anderen Mappe kopieren
10.09.2007 15:24:10
einer
noch ne kleine Frage. Kann ich viell die Zieldatei auch in eine Zelle in Arbeitsblatt schreiben und diesen Wert übernehmen in der Form :

Sub CopyModulic()
Dim sPath As String, wbQuelle As Workbook, wbZiel As Workbook
sPath = Application.Path & "\"
Set wbQuelle = ThisWorkbook
'Arbeitsmappe  _
in der das zu kopierende Modul ist
Set wbZiel =Worksheets("1ste tabelle").Range("H2").Value                                      _
'Arbeitsmappe in die das Modul kopiert werden soll
wbQuelle.VBProject _
.VBComponents("icmodul").Export sPath & "icmodul.bas"
With wbZiel.VBProject
.VBComponents.Import sPath & "icmodul.bas"
.VBComponents("icmodul").Name = "icmodul"
End With
Kill sPath & "\icmodul.bas"
MsgBox "Icmodul wurde kopiert!"
End Sub


Anzeige
AW: VBA-Module von einer zur anderen Mappe kopieren
10.09.2007 15:41:00
einer
Hallo marcel,
die Syntax ist dann:

Set wbZiel = Workbooks(Activeworkbook.Worksheets("1ste tabelle").Range("H2").Value) _
'Arbeitsmappe in die das Modul kopiert werden soll
oder
Set wbZiel = Workbooks(Workbooks("DieseDateiXYZ.xls").Worksheets("1ste tabelle").Range("H2"). _
Value) _
'Arbeitsmappe in die das Modul kopiert werden soll


Die Datei muss dann schon geöffnet sein, sonst gibt es eine Fehlermeldung
Gruß
Franz

AW: VBA-Module von einer zur anderen Mappe kopieren
10.09.2007 16:34:00
einer
Erstmal danke für die schnelle und super antwort.
Hab da noch etwas gefunden, wo ich denke das es noch besser zu meinem Problem paßen könnte.
->
Problem: Module und UserForms der in Zelle B1 genannten Arbeitsmappe sollen exportiert werden.
StandardModule: Modul1

Sub BasExtract()
Dim vbc As Object
Dim iCounter As Integer
Dim sFile As String, sTarget As String
sFile = Range("B1").Value
If Dir(sFile) = "" Then
Beep
MsgBox "Die Datei " & sFile & " wurde nicht gefunden!"
Exit Sub
End If
sTarget = WorksheetFunction.Substitute(sFile, "\" & Dir(sFile), "")
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Workbooks.Open sFile, False
For Each vbc In ActiveWorkbook.VBProject.VBComponents
iCounter = iCounter + 1
If vbc.Type = 1 Or vbc.Type = 100 Then
vbc.Export sTarget & "\backup" & iCounter & ".bas"
Else
vbc.Export sTarget & "\backup" & iCounter & ".frm"
End If
Next vbc
ActiveWorkbook.Close savechanges:=False
ERRORHANDLER:
Application.EnableEvents = True
End Sub


Ich verstehe aber nicht wo hin die sachen exportiert werden. Wahrscheinlich ne doffe frage aber jeder fängt ja mal klein an.
Danke schon mal führ deine Bemühungen.
Marcel

Anzeige
AW: VBA-Module von einer zur anderen Mappe kopiere
11.09.2007 02:18:00
einer
Hallo marcel,
wenn ich das richtig lese werden die Module und Userforms in das gleiche Verzeichnis exportiert, in dem die Datei abgelegt ist, die In Zelle B1 angegeben ist.
In B1 sollten Pfad und Name der Exceldateistehen, deren Module exprotiert werden sollen.
Die Funktion dieses Makros ist aber deutlich anders von dir in deiner ursprünglichen Frage beshcrieben.
Gruß
Franz

60 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige