Ich exportiere Module in den Pfad, wo die Datei, in der der Makro steckt, abgespeichert ist. Anschliessend will ich diese wieder importieren (adaptierter Code von Nepumuk). Das führte regelmässig zu einem Excel-Absturz. Nun habe ich den Makro langsam mit F8 in Einzelschritten abgespielt. Dabei habe ich festgestellt, dass jedes Mal, wenn nachfolgende Zeile gelb hinterlegt ist und ich dann F8 drücke, das Programm abstürzt ("Microsoft Office Excel hat ein Problem festgestellt und muss beendet werden.")
Wer kann mir weiterhelfen?
Danke, Peter
.VBComponents(Left$(objVBComponents.Name, Len(objVBComponents.Name) - 1)). _
CodeModule.InsertLines 1, objVBComponents.CodeModule.Lines( _
1, objVBComponents.CodeModule.CountOfLines)
Public Sub prcImport()
'von Nepumuk - mit kleinen Abänderungen durch PS (*)
Dim objVBComponents As Object, strFilename As String
If Right(FuStrFileToRefresh, 3) "xls" Then Exit Sub '* TRUE, wenn nicht genau 2 xls-Dateien offen sind
With Workbooks(FuStrFileToRefresh).VBProject '*Funktion liefert Dateiname
For Each objVBComponents In .VBComponents
Select Case objVBComponents.Type
Case 1, 2, 3
.VBComponents.Remove .VBComponents(objVBComponents.Name)
Case 100
With objVBComponents.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next
strFilename = Dir$(ThisWorkbook.Path & "\" & "*.*") '*Export hier gespeichert
Do While strFilename ""
If UCase$(Right$(strFilename, 4)) = ".BAS" Or _
UCase$(Right$(strFilename, 4)) = ".FRM" Or _
UCase$(Right$(strFilename, 4)) = ".CLS" Then
.VBComponents.Import ThisWorkbook.Path & "\" & strFilename "*.*") '*Export hier gespeichert
End If
strFilename = Dir$
Loop
On Error Resume Next
For Each objVBComponents In .VBComponents
If objVBComponents.Type = 2 Then
Err.Clear
If Left$(objVBComponents.Name, 17) = "DieseArbeitsmappe" Or _
Left$(objVBComponents.Name, 7) = "Tabelle" Or _
Left$(objVBComponents.Name, 8) = "Diagramm" Then
.VBComponents(Left$(objVBComponents.Name, Len(objVBComponents.Name) - 1)). _
CodeModule.InsertLines 1, objVBComponents.CodeModule.Lines( _
1, objVBComponents.CodeModule.CountOfLines)
If Err.Number = 0 Then
.VBComponents.Remove .VBComponents(objVBComponents.Name)
Else
Debug.Print objVBComponents.Name
End If
End If
End If
Next
End With