integra
Goto Top

Fehler beim Kompilieren Mehrdeutiger Name AutoNew

Hallo Leute

Ich habe nur sehr wenig Ahnung von Makros und stehe hier nun vor einem ziemlichen Problem.

Auf der Microsoft-Homespage habe ich die wichtigsten Punkte zur Erstellung von Makros angeschaut und dann mithilfe eines Kollegens folgendes Script erstellt.
Dieses Script soll die Informationen aus dem AD lesen und in das Word-File schreiben, welches dann als Template bei den Usern eingebettet wird.

Skript:
Sub AutoNew()
'
' AutoNew Makro
'
'
Sub ActiveDirectoryDaten()
Dim qQuery, objSysInfo, objuser
Dim Name, EMail, Phone, Fax
Set objSysInfo = CreateObject("ADSystemInfo") objSysInfo.RefreshSchemaCache qQuery = "LDAP://ou=,ou=,dc=,dc=,ou=" & objSysInfo.UserName Set objuser = GetObject(qQuery)

Name = objuser.firstname & " " & objuser.lastname Phone = objuser.TelephoneNumber Fax = objuser.facsimileTelephoneNumber EMail = objuser.mail

smsEinfügen "ADTelefon", Phone
smsEinfügen "ADName", Name
smsEinfügen "ADFax", Fax
smsEinfügen "ADEmail", EMail

If ActiveDocument.Bookmarks.Exists("Datum") = True Then ActiveDocument.FormFields("Datum").Result = Date End If End Sub

If ActiveDocument.Bookmarks.Exists(Textmarke) = True Then ActiveDocument.FormFields(Textmarke).Result = Variable End If End Sub

Sub AutoOpen()
Call ActiveDirectoryDaten
End Sub

Sub AutoNew()
Call ActiveDirectoryDaten
End Sub

End Sub

Wenn ich das Skript nun ausführe, erhalte ich die im Titel stehende Fehlermedlung.

Ich weis jetzt leider nicht wo der Fehler steckt und welche Zeilen nicht korrekt sind und wäre echt froh wenn mir jemand helfen könnte.

Ich danke sehr und wünsche noch einen angenhemen Tag.

Gruss Integra!

Content-ID: 161008

Url: https://administrator.de/contentid/161008

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

MrTrebron
MrTrebron 17.02.2011 um 11:42:43 Uhr
Goto Top
Hi Integra

' AutoNew Makro  
'  
'  
Sub ActiveDirectoryDaten()
Dim qQuery, objSysInfo, objuser
Dim Name, EMail, Phone, Fax
Set objSysInfo = CreateObject("ADSystemInfo") objSysInfo.RefreshSchemaCache qQuery = "LDAP://ou=,ou=,dc=,dc=,ou=" & objSysInfo.UserName Set objuser = GetObject(qQuery)  

Name = objuser.firstname & " " & objuser.lastname Phone = objuser.TelephoneNumber Fax = objuser.facsimileTelephoneNumber EMail = objuser.mail  

smsEinfügen "ADTelefon", Phone  
smsEinfügen "ADName", Name  
smsEinfügen "ADFax", Fax  
smsEinfügen "ADEmail", EMail  

If ActiveDocument.Bookmarks.Exists("Datum") = True Then ActiveDocument.FormFields("Datum").Result = Date   
End If 

If ActiveDocument.Bookmarks.Exists(Textmarke) = True Then ActiveDocument.FormFields(Textmarke).Result = Variable 
End If 

End Sub

Sub AutoOpen()
Call ActiveDirectoryDaten
End Sub

Sub AutoNew()
Call ActiveDirectoryDaten
End Sub

Du musst das Sub AutoNew() mit End Sub abschließen bevor du die nächsten Subs schreibst und auch nicht mehrfach End Sub in den Code packen ohne ein neues Sub anzufangen

Gruß
Norbert
Integra
Integra 17.02.2011 um 11:59:19 Uhr
Goto Top
Hallo Norbert

Danke für die Hilfe.
Werde den Quelltext mal heute ausprobieren.

Eine Frage hätte ich da noch. Reicht es wenn ich bei der LDAP-Abfrage einfach die OU mit allen Usern angebenen oder muss ich für jeden User den kompletten Pfad angeben?

Gruss und danke nochmals für deine Hilfe!

Integra!
MrTrebron
MrTrebron 17.02.2011 um 12:55:39 Uhr
Goto Top
Hi Integra,

zu der Abfrage selbst kann ich dir leider nichts sagen.

Gruß
Norbert
Integra
Integra 17.02.2011 um 13:54:08 Uhr
Goto Top
Hallo Norbert!

Ich habe mir deinen Quelltext nun mal ausgeliehen und bei mir eingefügt, trotzdem erhalte ich bei Zeile 28 immnoch die gleich Fehlermeldung.
Weiter erhalte ich in verschiedenene Zeilen die Meldung "Erwarte Anweisungsende" mit der ich auch wenig anfangen kann.

Hoffe du hast hier auch noch guten Rat.

Danke und Gruss

Integra!
MrTrebron
MrTrebron 17.02.2011 um 14:31:10 Uhr
Goto Top
Hi

es soll eine Funktion aufgerufen werden die heißt
smsEinfügen
Hast du die Funktion noch irgendwo?
Oder was sollen die Zeilen
smsEinfügen "ADTelefon", Phone  
smsEinfügen "ADName", Name  
smsEinfügen "ADFax", Fax  
smsEinfügen "ADEmail", EMail  

Gruß
Norbert
Integra
Integra 17.02.2011 um 15:13:26 Uhr
Goto Top
Nein, ich habe die Funktionen nur in diesen Zeilen, sonst niergendwo.

Ich muss dir ehrlich sagen, ich weis nicht was die Zeillen sollen, vielleicht sind sie dafür zuständig, wo auf dem Blatt die informationen eingefügt werden sollen.

Ich habe sie aus dem Text entfernt und erneut kompiliert aber die haben nix zur Sache... die Fehler enstehen bei den Zeilen 7 und 30, wobei bei 30 folgender Fehler erscheint "Fehler beim Kompilieren: Nach End Sub, End Function oder End Property können nur Kommentare stehen" was für mich heisst das auch hier wieder eine Funktion fehlt.

Zudem erhalte ich auf Zeile 7 einen Syntaxfehler... der nur auf die falsche LDAP-Abfrage zurückzuführen ist.

Gruss!
MrTrebron
MrTrebron 17.02.2011 um 15:26:05 Uhr
Goto Top
Hi

' AutoNew Makro  
'  
'  
Sub ActiveDirectoryDaten()
Dim qQuery, objSysInfo, objuser
Dim Name, EMail, Phone, Fax
Set objSysInfo = CreateObject("ADSystemInfo")  
objSysInfo.RefreshSchemaCache
qQuery = "LDAP://ou=,ou=,dc=,dc=,ou=" & objSysInfo.UserName  
Set objuser = GetObject(qQuery)

Name = objuser.firstname & " " & objuser.lastname  
Phone = objuser.TelephoneNumber
Fax = objuser.facsimileTelephoneNumber
EMail = objuser.mail

If ActiveDocument.Bookmarks.Exists("Datum") = True Then  
ActiveDocument.FormFields("Datum").Result = Date  
End If

If ActiveDocument.Bookmarks.Exists(Textmarke) = True Then
ActiveDocument.FormFields(Textmarke).Result = Variable
End If

End Sub

Sub AutoOpen()
Call ActiveDirectoryDaten
End Sub

Sub AutoNew()
Call ActiveDirectoryDaten
End Sub

Schaue mal ob dein Code so formatiert ist

Norbert
Integra
Integra 18.02.2011 um 11:04:40 Uhr
Goto Top
Hallo Norbert.

Also, ich habe mein Skript nun mit deinem Vorschlag verglichen.
Mein Code sieht so auf:

Sub AutoNew()
'  
' AutoNew Makro  
'  
'  
End Sub

Sub ActiveDirectoryDaten()
Dim qQuery, objSysInfo, objuser
Dim Name, EMail, Phone, Fax
Set objSysInfo = CreateObject("ADSystemInfo")  
objSysInfo.RefreshSchemaCache
qQuery = "LDAP://ou=,ou=,dc=,dc=" & objSysInfo.UserName  
Set objuser = GetObject(qQuery)

Name = objuser.firstname & " " & objuser.lastname  
Phone = objuser.TelephoneNumber
Fax = objuser.facsimileTelephoneNumber
EMail = objuser.mail


If ActiveDocument.Bookmarks.Exists("Datum") = True Then  
ActiveDocument.FormFields("Datum").Result = Date  
End If

If ActiveDocument.Bookmarks.Exists(Textmarke) = True Then
ActiveDocument.FormFields(Textmarke).Result = Variable
End If

End Sub


Sub AutoOpen()
Call ActiveDirectoryDaten
End Sub


Sub Auto()
Call ActiveDirectoryDaten
End Sub

Nun scheint eigentlich alles zu passen, leider erhalte ich beim kompilieren nun noch den Fehler "Laufzeitfehler -'2147463168 (80005000)': Automatisierungsfehler" bei Zeile 14.
Ich glaube langsam kommen wir der Geschichte näher^^

Danke und Gruss!

Edit:
In Zeile 14 verlangt er die LDAP-Abfrage und in der Klammer steht der Name der Abfrage die er verwenden soll (qQuery), ich glaube einfach das meine LDAP-Abfrage falsch ist. Ich weis eben nicht ob ich nun den Pfad bis zum User angeben muss oder ob es reicht wenn ich die OU der User angebe. Findet die genau Abfrage in Word nicht in den Zeilen 16-19? Das Makro soll eben den User erkennen der gerade angemeldet ist, also nix vordefiniertes.

Gruss Integra!