title image


Smiley Re: Abfragen ob Makro vorhanden ist
Hallo Martin,

versuch mal hiermit, getestet in Word 2000/XP.

Sub TestFindMakroInNormaldot()

Dim objModul As Object

Dim lEndzeile As Long

Dim lEndSpalte As Long

Dim bHaveMakro As Boolean

Dim sMakroname As String

'anpassen

sMakroname = "Sub AutoExec"



For Each objModul In Application.VBE.VBProjects("Normal").VBComponents

'vbext_ct_ClassModule Klassenmodul

'vbext_ct_MSForm Microsoft - Formular

'vbext_ct_StdModule Standardmodul -> 1

'vbext_ct_Document Dokumentmodul -> 100



If objModul.Type = 1 Then

bHaveMakro = objModul.Codemodule.Find(sMakroname, 1, 1, lEndzeile, lEndSpalte, True, False, False)

End If



If bHaveMakro = True Then

MsgBox Chr(34) & sMakroname & Chr(34) & " wurde gefunden!", , VBE.ActiveVBProject.Name

End If

Next objModul

End Sub





Sub MenueMakroErmitteln()

'CustomizationContext = NormalTemplate

CustomizationContext = ActiveDocument.AttachedTemplate

'Ermitteln, wie ein MenüMakro heisst und

'in welcher Vorlage es gespeichert ist.



On Error Resume Next

Dim cbTest As CommandBar

Dim ctlTest As CommandBarControl

Dim strRet, msg, strProz, strLeiste As String

Dim iRet As Integer



'Für die Symbolleiste "Standard", nur eigene Makros

'Für eigene Makros den Namen der Symbolleiste

'eintragen, z.B. strLeiste = "MeineMakros" o.ä.

strLeiste = "Standard"

Set cbTest = CommandBars(strLeiste)



If cbTest Is Nothing Then

MsgBox "Symbolleiste >" & strLeiste & "< nicht gefunden!", vbCritical, "Fehler"

Exit Sub

End If

'=====================================================

'Für die Menüleiste

'Set cbTest = CommandBars("Menu Bar")

For Each ctlTest In cbTest.Controls

'Für den Menüleisteneintrag "Eigenes"

'For Each ctlTest In cbTest.Controls("Eigenes").Controls

'=====================================================

'Nur für eigene Makros

With ctlTest

If .BuiltIn = False Then

msg = .Index & ".Eintrag:" & vbCrLf

msg = msg & "Name:" & vbTab & .Caption & vbCrLf

strProz = Right(.OnAction, Len(.OnAction) - InStr(1, .OnAction, "."))

msg = msg & "Makro:" & vbTab & strProz & vbCrLf

strMod = Left(.OnAction, InStr(1, .OnAction, ".") - 1)

msg = msg & "Modul:" & vbTab & strMod & vbCrLf

strRet = fkt_IstFVVorhanden(strMod)

msg = msg & "Vorlage:" & vbTab & strRet & vbCrLf

If .Index = cbTest.Controls.Count Then

msg = msg & vbCrLf

iRet = MsgBox(msg, vbInformation, "Makronamen im Menü ermitteln")

Else

msg = msg & vbCrLf & vbCrLf & vbTab & "Nächster Eintrag?"

iRet = MsgBox(msg, vbYesNo, String(3, 32) & "Makronamen im Menü/in Symbolleiste ermitteln")

If iRet = 7 Then Exit Sub

End If

End If

End With

Next ctlTest



Set cbTest = Nothing

End Sub



Public Function fkt_IstFVVorhanden(ByVal strProz As String) As String

Dim MyProj As VBProjects

Dim MyComp As VBComponents

Dim MyComp2 As VBComponent

Dim i, j As Integer



fkt_IstFVVorhanden = "->Nicht vorhanden<-"



On Error Resume Next

Set MyProj = Application.VBE.VBProjects



For i = 1 To MyProj.Count

Set MyComp = Application.VBE.VBProjects(i).VBComponents

If Not MyComp Is Nothing Then

For j = 1 To MyComp.Count

If MyComp(j).Name = strProz And MyComp(j).Name <> "" Then

fkt_IstFVVorhanden = MyProj(i).Name & ".dot"

Exit Function

End If

Next j

End If

Next i

End Function      Hubert





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: