Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
608to612
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
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code aus DieserArbeitsmappe in neue Mappe kopieren

Code aus DieserArbeitsmappe in neue Mappe kopieren
14.05.2005 23:09:14
Peter
Servus,
hab noch mal ne Frage, ich hab in der Recherche die Möglichkeit gefunden Module in eine neue Mappe zu kopieren. Das klappt soweit auch gut, doch wie kann ich DieseArbeitsmappe(Klassmodul(cls)) in die neue Mappe kopieren, so das auch das Workbook_Open ereignis funzt, mit unten stehenden Code funktionierts leider nicht.
Dim sPath As String
Dim sPath2 As String
sPath = Application.DefaultFilePath & "\temp.bas"
sPath2 = Application.DefaultFilePath & "\temp.cls"
ThisWorkbook.VBProject.VBComponents("Modul1").Export sPath
ActiveWorkbook.VBProject.VBComponents.Import sPath
Kill sPath
ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").Export sPath2
ActiveWorkbook.VBProject.VBComponents.Import sPath2
Kill sPath2

Vieleicht hat jemand nen Tip für mich, danke.
MfG Peter

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopieren
14.05.2005 23:44:22
Beate
Hallo Peter,
warum setzt du die Datei mit den Makros nicht als Vorlagendatei (*.xlt) ein? Dann hätte doch jede daraus generierte Datei automatisch alle Makros bei Fuß?
Von Bernd Strohhaecker hatte ich mal nachstehenden Code, der sollte eigentlich alle VBA Komponenten umkopieren. Tipp: Vorher - UNBEDINGT - sichern !
Dateinamen natürlich anpassen. Ich habe das eben mal ausprobiert. Betreffend "dieseArbeitsmappe" wird durch den Code in der Zielmappe Mappe2.xls ein Klassenmodul "dieseArbeitsmappe1" angelegt. Also zusätzlich zur Bestehenden. Aber für dich vielleicht ein Ausgangspunkt zum Ausprobieren.
Gruß,
Beate
--------aus:http://www.excel-center.de/forum/read.php?f=1&i=47565&t=47437#reply_47565 ---
Option Explicit

Sub CopyModules(SourceWB As Workbook, TargetWB As Workbook)
Dim strTempFile As String
Dim i As Integer
strTempFile = "c:\temp\xx.vba"
For i = 1 To SourceWB.VBProject.VBComponents.Count
SourceWB.VBProject.VBComponents(i).Export strTempFile
TargetWB.VBProject.VBComponents.Import strTempFile
' Kill strTempFile
Next
End Sub


Sub test()
Call CopyModules(Workbooks("MappemitVBA.xls"), Workbooks("Mappe2.xls"))
End Sub

Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopieren
14.05.2005 23:51:51
Peter
Servus,
und danke aber das mit DieseArbeitsmappe1 macht mein Code auch und dann funktioniert das Workbook_Open Ereignis eben nicht.
Mit der Vorlage ist keine schlechte Idee, das Problem ist nur das es sich um ein Kassenbuch handelt und der entsprechende Code quasi ein neues Jahr in einer neuen Arbeitsmappe generiert. Ich poste mal den ganzen Code vieleicht wirds dann deutlicher.
Der Code wird über eine selbst erstellte Symbolleiste ausgelöst. @Beate: Danke.
Sub neuesjahr()
Dim y As Variant
Dim i%
Dim m As Variant
Dim wrkbk As String
Dim wrkbk2 As String
Dim sPath As String
Dim sPath2 As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
m = Range("D25")
wrkbk = ActiveWorkbook.name
y = InputBox("Bitte geben Sie das Jahr an:", "Kassenbuch-Jahr")
sPath = Application.DefaultFilePath & "\temp.bas"
sPath2 = Application.DefaultFilePath & "\temp.cls"
Workbooks.Add
wrkbk2 = ActiveWorkbook.name
For i = 1 To 12
With Workbooks(wrkbk).Worksheets("Vorlage")
.Range("D25").Value = i
.Range("E25").Value = y
.Copy before:=Workbooks(wrkbk2).Sheets(1)
End With
Workbooks(wrkbk2).Worksheets("Vorlage").name = "KB" & i
Next
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Delete
ThisWorkbook.VBProject.VBComponents("Modul1").Export sPath
ActiveWorkbook.VBProject.VBComponents.Import sPath
Kill sPath
ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").Export sPath2
ActiveWorkbook.VBProject.VBComponents.Import sPath2
Kill sPath2
Workbooks(wrkbk2).SaveAs ("Kasse" & y)
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

MfG Peter
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopieren
15.05.2005 00:05:40
Beate
Hallo Peter,
ein Kassenbuch wird aber nur einmal jährlich neu angelegt, soweit mir bekannt. Warum machst du dann nicht (natürlich nach Sicherung des alten Jahres) einfach speichern unter...., könntest ja noch ein Makro einfügen, welches den Endbestand zum Anfangsbestand macht und die restlichen Buchungen löscht? Wärst du deine Probleme los und hättest alle Makros erhalten.
Gruß,
Beate
AW: Code aus DieserArbeitsmappe in neue Mappe kopieren
15.05.2005 00:41:49
Peter
Servus,
erstmal Danke das du dich um Mitternächtliche Stunde noch meinem Problem annimmst :)
Hast eigentlich recht, werd ich mal so Versuchen, ärgere mich nur , das ich ewig für den zuvor geposteten Code gebraucht hab. (zwecks suchen, testen, anfänglich nichts funktioniert, usw.)
Interisieren wie das funktioniert das man Klassmodule wie DieseArbeitsmappe lauffähig kopiert würds mich ja schon, da ich in der Recherche auch nichts gefunden habe, vieleicht weiss jemand ja noch was dazu? Danke.
MfG Peter
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 00:39:40
Ralf
Hallo Peter,
das ist auch aus dem Archiv und erfolgreich bei mir im Einsatz:
https://www.herber.de/bbs/user/22693.xls
Hoffe es hilft.
Gruß
Ralf
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 00:45:36
Peter
Servus,
ich sag jetzt mal Danke?
In deiner Datei war ein Virus (NortonAV), deshalb hab ich leider keinen Code (wurde entfernt).
MfG Peter
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 00:49:29
Reinhard
Hallo Peter,
habe keinen Norton, deshalb den Code*g:
in Modul1 (in Diesearbeitsmappe steht nur was von columsautofir bei wb-open):

Option Explicit
Sub copy_code()
Dim i As Integer
Dim scode As String
Dim scode1 As String
Dim myVBComponents As Object
Dim neuesModul As Object
With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule
scode = .Lines(1, .CountOfLines)
End With
With ThisWorkbook.VBProject.VBComponents("Modul1").CodeModule
scode1 = .Lines(1, .CountOfLines)
End With
Workbooks.Add
With ActiveWorkbook.VBProject
For Each myVBComponents In .VBComponents
Select Case myVBComponents.Type
Case 1, 2, 3
.VBComponents.Remove .VBComponents(myVBComponents.Name)
Case 100
With myVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
ActiveWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.AddFromString scode
Set neuesModul = ActiveWorkbook.VBProject.VBComponents.Add(1)
neuesModul.Name = "Modul1"
With ActiveWorkbook.VBProject.VBComponents("Modul1").CodeModule
.DeleteLines 1, .CountOfLines
End With
ActiveWorkbook.VBProject.VBComponents("Modul1").CodeModule.AddFromString scode1
Application.VBE.MainWindow.Visible = False
End Sub

Gruß
Reinhard
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 00:51:31
Ralf
Hallo Peter,
ich sage jetzt mal - sorry, aber mit dem Norton hatte ich auch massive Probleme. Deshalb habe ich ihn rausgeschmissen. Aber das ist ein anderes Thema. Hier der Code (der vom Norton und vom AntiVir angemeckert wurde):

Sub copy_code()
Dim i As Integer
Dim scode As String
Dim scode1 As String
Dim myVBComponents As Object
Dim neuesModul As Object
With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule
scode = .Lines(1, .CountOfLines)
End With
With ThisWorkbook.VBProject.VBComponents("Modul1").CodeModule
scode1 = .Lines(1, .CountOfLines)
End With
Workbooks.Add
With ActiveWorkbook.VBProject
For Each myVBComponents In .VBComponents
Select Case myVBComponents.Type
Case 1, 2, 3
.VBComponents.Remove .VBComponents(myVBComponents.Name)
Case 100
With myVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
End With
ActiveWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.AddFromString scode
Set neuesModul = ActiveWorkbook.VBProject.VBComponents.Add(1)
neuesModul.Name = "Modul1"
With ActiveWorkbook.VBProject.VBComponents("Modul1").CodeModule
.DeleteLines 1, .CountOfLines
End With
ActiveWorkbook.VBProject.VBComponents("Modul1").CodeModule.AddFromString scode1
Application.VBE.MainWindow.Visible = False
End Sub

Gruß
Ralf
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 01:16:08
Peter
Servus,
@Ralf: brauchst dich nicht entschuldigen wahr eigentlich klar das das an NortonAV liegt :) , Code funzt wunderbar, hab Ihn jetzt angepasst, einfach ge.. :) Danke
@Reinhardt: Danke für die Übersetzung ;)
@alle: poste den fertigen Code jetzt nochmal für´s Archiv, wenn Ihr NortonAV benutzt, werdet Ihr zwar ne Viruswarnung bekommen, warum keine Ahnung? Ist aber kein Virus.
Sub neuesjahr()
Dim y As Variant
Dim i%
Dim m As Variant
Dim wrkbk As String
Dim wrkbk2 As String
Dim sPath As String
Dim sPath2 As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
m = Range("D25")
wrkbk = ActiveWorkbook.name
y = InputBox("Bitte geben Sie das Jahr an:", "Kassenbuch-Jahr")
sPath = Application.DefaultFilePath & "\temp.bas"
Workbooks.Add
wrkbk2 = ActiveWorkbook.name
For i = 1 To 12
With Workbooks(wrkbk).Worksheets("Vorlage")
.Range("D25").Value = i
.Range("E25").Value = y
.Copy before:=Workbooks(wrkbk2).Sheets(1)
End With
Workbooks(wrkbk2).Worksheets("Vorlage").name = "KB" & i
Next
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Delete
ThisWorkbook.VBProject.VBComponents("Modul1").Export sPath
ActiveWorkbook.VBProject.VBComponents.Import sPath
Kill sPath
With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule
sPath2 = .Lines(1, .CountOfLines)
End With
ActiveWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.AddFromString sPath2
Workbooks(wrkbk2).SaveAs ("Kasse" & y)
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Danke nochmal an Beate, Ralf und Reinhard :) und frohe Pfingsten
MfG Peter
Anzeige
Danke für die Rückmeldung. Auch schöne Pfingsten.
15.05.2005 01:20:48
Ralf
:-)
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 01:48:08
Reinhard
Hallo Peter,
wie ist das wenn du diesen Code bzw die datei abspeicherst, kommt dann auch Norton?
Wenn ja, setz mal die Zeile mit dem Import auf Rem, bzw, rem solange bis er nicht mehr kommt, welche Zeile sieht denn Norton als bedro´hlich an?
Gruß
Reinhard
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 02:11:09
Peter
Servus,
da ja alles andere ohne Virus-Warnung gefunzt hat müssen es die Zeilen:
With ThisWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule
sPath2 = .Lines(1, .CountOfLines)
End With
ActiveWorkbook.VBProject.VBComponents("DieseArbeitsmappe").CodeModule.AddFromString sPath2

sein.
Aber warum, keine Ahnung ?
MfG Peter
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 02:29:51
Peter
Servus,
wobei ich gerade bemerke das das doch grad ziemlicher Scheiß ist, da er mir das komplette Makro1 (ca. 2 Tage arbeit gelöscht hat, Scheiß NortonAV).
Hat irgendjemand einen Plan was ich tun kann, das ohne komplette Neuinstallation das Makro funtzt (ist leider ein Geschäfts-PC).
MfG Peter
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 03:12:43
Reinhard
Hallo Peter,
ich habe vie Phantasie und wenig Ahnung.
ich weiss jetzt gar nicht wann sich NAV bei dir meldet, in dem Moment wo du das makro aufrufst?
Dann bräuchtest du ein anders makro, was du aufrufst und dass den NAV pausieren lässt, dann dein Makro, anschliessend NAV wieder schärfen.
Wie das geht wissen die Götter, oder nepu oder carola, jedenfalls ich nicht:-)
Gruß
Reinhard
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 03:24:09
Beate
Back to the roots, boys!
Warum einfach, wenns auch kompliziert geht?
Gruß Beate (verhühnert euch dabei nicht eure Systeme)
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 03:37:32
Reinhard
Hallo Beate,
danke für das "Boy" *g kann ich dich anrufen wenn mich wieder so ein Türsteher nicht in die Disco lässt und was von Ops murmelt? Danke :-)
Ansonsten versteh ich grad das Gebäude an dem die Bahnhofsuhr hängt von dem was du evtl meinen könntest.
Wurzeln? /away Ahnengalerie gehen und nachschauen ob da einer was von wusste.
Gruß
Reinhard
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 04:13:43
Reinhard
Hallo Peter,
ich glaub in der neuen ct ist das.
die besten Scanner kriegen nur 80% mit.
Nimmst du die besten 5 , kommste nicht auf 99% Sicherheit sondern nur auf 85 oder so.
ich las mir durch was man bei zonealrm alles einstellen müsste und verstand, zonealarm einfach so ohne Änderungen installiern und glauben es hilft, kannste kicken.
Zonealarm für mich zu optimieren war mir zuviel Aktion.
also habe ich keinen Firewall, keinen Virenscanner.
Aber ich surf vorsichtig.
ist so wie, seitdem es airbags gibt schwoll die Anzahl der Unfälle an, die Zahl der Toten nahm ab, hätte man aber anstelle der Airbags eine Speerspitze ans Lenkrad momtiert die direkt auf den hals des fahrers zielt, dann wäre beides weniger geworden, weniger Unfälle, weniger Tote.
Gruß
Reinhard
Anzeige
AW: Code aus DieserArbeitsmappe in neue Mappe kopi
15.05.2005 14:54:33
Peter
Servus,
geb ich dir im Prinzip recht, hilft mir nur nichts ;) und jetzt nen Code schreiben der Norton für einen Moment ausschaltet. Ich glaube da überschätzt mich mal 150^150, vieleicht Nepupumuk, aber ich neeein. Außerdem find ich das ein bisschen übertrieben hat Beate nicht ganz unrecht ;)
Seis drum, aber das der Dumme Virenscanner wegen den Zeilen spinnt :(
Im übrigen anspringen tut er wenn(oder(speichern;Makro starten). :)
MfG Peter

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige