Ich versuche einen Code etwas umzubauen und habe da mit ein paar Codezeilen etwas Mühe.
Die urpsprüngliche Zeile ist:
'Set VBComps = ActiveWorkbook.VBProject.VBComponents
Nun will ich den Code nicht im ActiveWorkbook ausführen, sondern in einem Workbook, den mir die Funktion FuObFileToRefresh ermittelt.
mit msgbox = FuObFiletoRefresh erhalte ich den gewünschten Namen mit Leerzeichen, wie abc def.xls
Nun will ich anstelle von ActiveWorkbook den Namen des Objektes übergeben. Wegen der Leerzeichen habe ich vorne und hinten noch ein ' (Hochkomma) angefügt. Doch mit oder ohne Hochkomma, bei dieser Codezeile ist Schluss:
Set VBComps = Workbooks("'" & FuObFileToRefresh & "'").VBProject.VBComponents
Kann mir jemand helfen?
Danke, Peter
Sub DeleteVBAinOrherFile()
'notwendige Verweise:
'Microsoft Visual Basic for Application Extensibility 5.3
Dim VBComp As VBIDE.VBComponent
Dim VBComps As VBIDE.VBComponents
Dim objFileName As Object
Application.EnableEvents = False
'Set VBComps = ActiveWorkbook.VBProject.VBComponents
MsgBox FuObFileToRefresh.Name
? Set VBComps = Workbooks("'" & FuObFileToRefresh & "'").VBProject.VBComponents ?
For Each VBComp In VBComps
Select Case VBComp.Type
Case vbext_ct_StdModule, vbext_ct_MSForm, _
vbext_ct_ClassModule
VBComps.Remove VBComp
Case Else
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VBComp
Application.EnableEvents = True
End Sub