Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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

Frage an die Profis

Frage an die Profis
Born
Hallo Forum,
ich versuche per Makro, dass innerhalb eines Addins gestartet wird, den Code eines AddIn-Moduls in eine Tabelle einer Arbeitsmappe zu kopieren. Nach einigem Testen habe ich folgendes Makro dazu erstellt (unter Mithilfe von Franz aus dem Forum):
Sub TabCodeCopy_2()
Dim wbQuelle As Workbook, wksQuelle As Worksheet
Dim wbZiel As Workbook, wksZiel As Worksheet
Dim strCode As String
Set wbQuelle = ThisWorkbook
Set wksQuelle = wbQuelle.Worksheets("HT")
Set wbZiel = Workbooks("091106_Terminübersicht.xls")
Set wksZiel = wbZiel.Worksheets("Tabelle1")
With wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
'Copy-Bereich
For i = 1 To wbQuelle.VBProject.VBComponents(wksQuelle.CodeName).CodeModule.CountOfLines
wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule.InsertLines i, wbQuelle.VBProject. _
VBComponents(wksQuelle.CodeName).CodeModule.Lines(i, 1)
Next
End Sub

Benutze ich statt des Codes ab "Copy-Bereich" eine der folgenden Varianten, so stürzt mir Excel ab:
Variante 1:
wbQuelle.VBProject.VBComponents(wksQuelle.CodeName).Export ("mbo_Modul.bas")
wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule.AddFromFile ("mbo_Modul.bas")
Variante 2:
For i = 1 To wbQuelle.VBProject.VBComponents(wksQuelle.CodeName).CodeModule.CountOfLines - 1
wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule.AddFromString wbQuelle.VBProject.VBComponents(wksQuelle.CodeName).CodeModule.Lines(i, 1)
Next
Kennt jemand aus dem Forum, den Grund, warum Excel abstürzt? Es ist keinerlei Blatt-, Arbeitsmappen- oder VB-Projekt-Schutz aktiv.
Vielen Dank,
M. Born

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Frage an die Profis
06.11.2009 11:09:19
Luschi
Hallo M.Born,
habe gerade diesen Vba-Code probiert und er funktioniert:

Sub TabCodeCopy_2()
Dim wbQuelle As Workbook, wksQuelle As Worksheet
Dim wbZiel As Workbook, wksZiel As Worksheet
Dim strCode As String, i As Integer
Set wbQuelle = ThisWorkbook
Set wksQuelle = wbQuelle.Worksheets("Tabelle1")
Set wbZiel = Workbooks("Mappe2.xls")
Set wksZiel = wbZiel.Worksheets("Tabelle1")
With wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With
End
''Copy -Bereich
' For i = 1 To wbQuelle.VBProject.VBComponents(wksQuelle.CodeName).CodeModule.CountOfLines
'     wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule.InsertLines i, wbQuelle. _
VBProject. _
'            VBComponents(wksQuelle.CodeName).CodeModule.Lines(i, 1)
' Next
wbQuelle.VBProject.VBComponents(wksQuelle.CodeName).Export ("y:\mbo_Modul.cls")
wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule.AddFromFile ("y:\mbo_Modul.cls")
With wbZiel.VBProject.VBComponents(wksZiel.CodeName).CodeModule
.DeleteLines 1, 4
End With
End Sub
Die letzte With-Anweisung ist notwendig, um die ersten 4 Zeilen zu löschen, die in der cls-Datei mit reinkopiert wurden. Die Datei kann natürlich auch den Dateityp *.bas haben. Da die Tabellen-Module aber Klassenmodule sind, vergebe ich hier den Dateityp *.cls.
Selbst wenn Vba-Fehler drin sind, wird der Vba-Code kopiert.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Frage an die Profis
06.11.2009 11:25:17
Born
Hallo Luschi,
vielen Dank für die schnelle Rückmeldung. Dass die ersten 4 Zeilen gelöscht werden müssen, ist leider in der Hilfe und hier im Forum nirgends erwähnt worden. Nachdem ich mir die Dateien jetzt mal angeschaut habe, verstehe ich auch warum.
Vielen Dank,
M. Born
AW: Frage an die Profis
06.11.2009 11:47:44
Born
Hallo Luschi,
ich habe Deinen Code 1:1 übernommen und nur die Dateinamen und den Pfad der CLS angepasst. Das Makro stürzt weiterhin bereits bei der AddFromFile-Anweisung ab. In die letzte With-Anweisung gelangt es nicht mehr. Scheint demzufolge wohl an meinem Excel zu liegen....
Viele Grüße,
M. Born
Anzeige
AW: Frage an die Profis
06.11.2009 12:06:56
Luschi
Hallo M.Born,
welches Service-Pack (SP) hast Du für Office 2003 installiert. Habe hier auf dem Firmen-PC SP2, obwohl eigentlich SP3 das Aktuellste ist. Aber man liest ja immer wieder mal, daß es mit dem SP3 so einige Probleme gibt.
Werde das Prolem morgen auf meinem Heim-PC mal ausführlich testen. Da habe ich dann auch SP3 zur Verfügung.
Gruß von Luschi
aus klein-Paris
AW: Frage an die Profis
06.11.2009 12:18:12
Born
Hallo Luschi,
ich habe SP3, Build 11.8307.8221. Dass es mit SP3 Probleme gibt, hab ich so noch nicht mitgekriegt. Gibts da irgendwo eine Liste?
Vielen Dank für die Hilfe,
M. Born
AW: Frage an die Profis
07.11.2009 15:45:45
Luschi
Hallo M.Born,
habe es jetzt mit Excel 2003 SP 3 getestet und es funktioniert bestens.
Allerdings benutze ich für die Formulare, Module und normale Klassenmodule diese Variante:
Arbeitsmappe.VBProject.VBComponents.Import "c:\excel\blabla.frm"
Arbeitsmappe.VBProject.VBComponents.Import "c:\excel\blabla.bas"
Abeitsmappe.VBProject.VBComponents.Import "c:\excel\blabla.frm"
Nur die Klassenmodule aus "DieseArbeitsmappe" kann man so nicht importieren sondern
muß diese mit der AddFromFile-Methode einfügen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Frage an die Profis
10.11.2009 11:43:58
M.
Hallo Luschi,
vielen Dank für die Rückmeldung. Wie schon geschrieben, habe ich ja jetzt eine Variante, die funktioniert, und ich wollte nur den Grund wissen, warum Excel abstürzt. Wenn Excel 2003 mit SP3 bei Ihnen funktioniert, scheint es wohl direkt an meiner Installation zu liegen.
Nochmals vielen Dank,
M. Born

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige