kann mir jemand sagen, wie ich von Mappe1.xls aus per VBA prüfen kann, ob in Mappe2.xls die Userform »UF1« existiert ?
Vielen Dank für Eure Hilfe im voraus.
Gruss
erwin
Sub UF_Suchen()
'24.11.2006, NoNet - www.excelei.de (z.Zt. DOWN !)
Dim Mappe, uf
Dim vbc, gefunden
Mappe = "Mappe2" 'die zu durchsuchende Mappe
uf = "UserForm1" 'der Name des zu suchenden UserForms
gefunden = False
With Workbooks(Mappe).VBProject
For Each vbc In .vbcomponents
If vbc.Type = 3 Then 'Userform
If UCase(vbc.Name) = UCase(uf) Then
gefunden = True
Exit For
End If
End If
Next
End With
MsgBox "Das UserForm '" & uf & "' wurde in " & Mappe & _
IIf(gefunden, "", " nicht") & " gefunden !"
End Sub
Function CheckUfExist(tarWkb As Workbook, ufName As String) As Boolean
Dim n As Long
With tarWkb
For n = .VBProject.VBComponents.Count To 1 Step -1
With .VBProject.VBComponents(n)
'Achtung .Name ist CaseSensitiv
If .Type = 3 And .Name = ufName Then
CheckUfExist = True
Exit Function
End If
End With
Next
End With
CheckUfExist = False
End Function
Sub Test()
MsgBox CheckUfExist(Workbooks("Book2.xls"), "UserForm1")
End Sub
Function VBA_Suchen(Mappe, objName, Optional objTyp As Variant = 3)
'Sucht, ob in einer anderen Mappe ein bestimmtes VBA-Element existiert
'Mappe : die zu durchsuchende Mappe
'objName : der Name des zu suchenden UserForms/SUBs/Function
'objTyp : Der Typ des zu suchendne VBA-Elements : 1=SUB, 2=Function, 3=UF
'Aufruf : msgBox VBA_Suchen("mappe2","MeinMakro",1)
'Oder : msgBox VBA_Suchen("mappe2","MeineUDF",2)
'Oder : msgBox VBA_Suchen("mappe2","UserForm1")
Dim vbc, gefunden, vbZeile
gefunden = False
For Each vbc In Workbooks(Mappe).VBProject.vbcomponents
If vbc.Type = 3 And objTyp = 3 Then 'Userform
If UCase(vbc.Name) = UCase(objName) Then
gefunden = True
Exit For
End If
ElseIf (vbc.Type = 1 Or vbc.Type = 100) And (objTyp = 1 Or objTyp = 2) Then
For vbZeile = 1 To vbc.codemodule.countoflines
If UCase(LTrim(vbc.codemodule.Lines(vbZeile, 1))) Like _
UCase(IIf(objTyp = 1, "SUB ", "FUNCTION ") & _
objName & "(*") Then
gefunden = True
Exit For
End If
Next
End If
Next
If gefunden Then
VBA_Suchen = True
Else
VBA_Suchen = False
End If
End Function
Sub VBAPruefen()
MsgBox VBA_Suchen("mappe2", "MeinMakro", 1)
MsgBox VBA_Suchen("mappe2", "MeineUDF", 2)
MsgBox VBA_Suchen("mappe2", "UserForm1")
End Sub
Function VBA_Suchen(Mappe, objName, Optional objTyp As Variant = 3)
'Sucht, ob in einer anderen Mappe ein bestimmtes VBA-Element existiert
'Mappe : die zu durchsuchende Mappe
'objName : der Name des zu suchenden UserForms/SUBs/Function
'objTyp : Der Typ des zu suchendne VBA-Elements : 1=SUB, 2=Function, 3=UF
'Aufruf : msgBox VBA_Suchen("mappe2","MeinMakro",1)
'Oder : msgBox VBA_Suchen("mappe2","MeineUDF",2)
'Oder : msgBox VBA_Suchen("mappe2","UserForm1")
Dim vbc, gefunden, vbZeile
gefunden = False
For Each vbc In Workbooks(Mappe).VBProject.vbcomponents
If vbc.Type = 3 And objTyp = 3 Then 'Userform
If UCase(vbc.Name) = UCase(objName) Then
gefunden = True
Exit For
End If
ElseIf vbc.Type = 1 And (objTyp = 1 Or objTyp = 2) Then
For vbZeile = 1 To vbc.codemodule.countoflines
If UCase(LTrim(vbc.codemodule.Lines(vbZeile, 1))) Like _
UCase(IIf(objTyp = 1, "SUB ", "FUNCTION ") & _
objName & "(*") Then
gefunden = True
Exit For
End If
Next
End If
Next
If gefunden Then
VBA_Suchen = True
Else
VBA_Suchen = False
End If
End Function
Function CheckUfExist(tarWkb As Workbook, ufName As String) As Boolean
CheckUfExist = tarWkb.VBProject.VBComponents(ufName).Type = 3
End Function