Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Praktik

Active Directory Daten in Word

Empfohlene Beiträge

Du mußt den Anhang freischalten lassen.

 

Erledigt, danke @ Necron

 

Ist doch auch klar, es wird das komplette Array eingefügt. Definiere sValue doch mal mit "Heute ist Freitag" und lass die For-Schleife weg. Was wird jetzt eingetragen?

 

Dann wird an der Stelle, an der der Benutzername sein sollte "Heute ist Freitag" eingefügt.

Ich würde glaub ich lieber das andere Script nehmen, dass scheint nicht so kompliziert zu sein.^^

 

-edit-

 

So, jetzt habe ich es.^^

 

   Sub autoopen()
   Dim KeyValue1 As String
   Dim Key1 As String
   Dim Section1 As String
   Dim KeyValue2 As String
   Dim Key2 As String
   Dim Section2 As String
   Dim KeyValue3 As String
   Dim Key3 As String
   Dim Section3 As String
   Dim KeyValue4 As String
   Dim Key4 As String
   Dim Section4 As String
   Dim KeyValue5 As String
   Dim Key5 As String
   Dim Section5 As String

   Key1 = "Abteilung"
   Section1 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
   KeyValue1 = System.PrivateProfileString("", Section1, Key1)
   Key2 = "Department"
   Section2 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
   KeyValue2 = System.PrivateProfileString("", Section2, Key2)
   Key3 = "Benutzername"
   Section3 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
   KeyValue3 = System.PrivateProfileString("", Section3, Key3)
   Key4 = "TelNo"
   Section4 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
   KeyValue4 = System.PrivateProfileString("", Section4, Key4)
   Key5 = "Mail"
   Section5 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
   KeyValue5 = System.PrivateProfileString("", Section5, Key5)


   ActiveDocument.Bookmarks("Abteilung").Select
   Selection.TypeText KeyValue1
   ActiveDocument.Bookmarks("Department").Select
   Selection.TypeText KeyValue2
   ActiveDocument.Bookmarks("Benutzername").Select
   Selection.TypeText KeyValue3
   ActiveDocument.Bookmarks("TelNo").Select
   Selection.TypeText KeyValue4
   ActiveDocument.Bookmarks("Mail").Select
   Selection.TypeText KeyValue5

   End Sub

 

Jetzt werde ich mir das mit dem Autotext nochmal genauer ansehen. Ich melde mich wieder.^^ Schonmal vielen vielen Dank bis hierher :)

Achso und Sub AutoOpen oder AutoNew? Was müsste es sein bei dieser Vorlage die, wie du ja gesagt hast, global mit geöffnet wird wenn sie im entsprechendem Verzeichnis liegt?

 

Wegen dem Autotext: Die Werte aus der Registry sollen nun als Autotext definiert werden. Gibt es eine Möglichkeit das ohne Bookmarks zu machen? Sodass er im grunde gleich die ausgelesen Daten als Autotext setzt, müsste dann ja irgendwie Dynamisch sein, oder? Schließlich kann ja auch nur ein Bookmark zur Zeit existieren? Ich kann es auch nicht als Makro aufnehmen, da es in einem Textfeld ist.

 

Wenn ich das hier benutze:

   Set oAutoText = Templates(ActiveDocument.AttachedTemplate).AutoTextEntries _
       .Add(Name:=Key1, Range:=Selection.Range)

Dann sagt er immer "das Element ist nicht in der Sammlung vorhanden"

 

Und wenn ich das hier nutze:

  NormalTemplate.AutoTextEntries.Add Name:=KeyValue1, _ 
           Range:=Selection.Range 

Dann erstellt er zwar ein Autotext mit dem Namen Abteilung aber der Inhalt ist leer.

 

Gruß

Praktik

bearbeitet von Praktik

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Dann wird an der Stelle, an der der Benutzername sein sollte "Heute ist Freitag" eingefügt.

 

Dann ist es ja OK. Jetzt mußt Du an Stelle "Heute ist Freitag" die Variable eintragen.

 

 

Key1 = "Abteilung"

Section1 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"

KeyValue1 = System.PrivateProfileString("", Section1, Key1)

Key2 = "Department"

Section2 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"

KeyValue2 = System.PrivateProfileString("", Section2, Key2)

 

Erstell dir eine Funktion die aus der Registry liest. Von dort aus rufst Du die Funktion auf, schon mußt Du den Text nur einmal schreiben. ;)

 

Public Function ReadRegistryKey(strSchluessel As String) As String
On Error GoTo err_ReadRegistryKey:

   ' strSchluessel = Key1, Key2, Key3, Key4 oder Key5

   Dim strRC As String
   Dim objWSHShell As Object
   Set objWSHShell = CreateObject("WScript.Shell")
   strRC = objWSHShell.RegRead("HKEY_CURRENT_USER\Software\DokumenteinstellungenWord\" & strSchluessel)
   'MsgBox strRC
   ReadRegistryKey = strRC
   Set objWSHShell = Nothing

exit_ReadRegistryKey:
   Exit Function
err_ReadRegistryKey:
   If Err.Number = -2147024894 Then
       ' strSchluessel = Key1, Key2, Key3, Key4 oder Key5
       'MsgBox "Wert " & strSchluessel & " existiert nicht!"
   Else
       MsgBox "Fehler: " & Err.Number & " " & Err.Description & " " & mModName & ".ReadRegistryKey() As String"
   End If
   ReadRegistryKey = ""
   Resume exit_ReadRegistryKey
End Function

 

Jetzt werde ich mir das mit dem Autotext nochmal genauer ansehen. Ich melde mich wieder.^^ Schonmal vielen vielen Dank bis hierher :)

Achso und Sub AutoOpen oder AutoNew? Was müsste es sein bei dieser Vorlage die, wie du ja gesagt hast, global mit geöffnet wird wenn sie im entsprechendem Verzeichnis liegt?

 

Bei uns ist das immer in der Sub Main.

 

Wegen dem Autotext: Die Werte aus der Registry sollen nun als Autotext definiert werden. Gibt es eine Möglichkeit das ohne Bookmarks zu machen? Sodass er im grunde gleich die ausgelesen Daten als Autotext setzt, müsste dann ja irgendwie Dynamisch sein, oder? Schließlich kann ja auch nur ein Bookmark zur Zeit existieren? Ich kann es auch nicht als Makro aufnehmen, da es in einem Textfeld ist.

 

Du kannst IMHO den Inhalt des Autotextes überschreiben. Beispiel:

 

Dim Benutzername as String
   Benutzername = fReadValue("HKCU", _
                strRegBenutzereinstellungen, _
                   "Benutzername", "S", "Benutzername fehlt", sValue)
'Du mußt noch eine Prüfung einbauen, falls es den Eintrag nicht gibt.

   If ActiveDocument.Bookmarks.Exists("unserZeichen") Then
       Selection.GoTo What:=wdGoToBookmark, Name:="unserZeichen"
       Selection.TypeText Benutzername
   End If

 

Wenn ich das hier benutze:

   Set oAutoText = Templates(ActiveDocument.AttachedTemplate).AutoTextEntries _
       .Add(Name:=Key1, Range:=Selection.Range)

Dann sagt er immer "das Element ist nicht in der Sammlung vorhanden"

 

Der Autotext muss vorhanden und geladen sein. Deshalb auch der Hinweis auf das Startup Verzeichnis für Word. Wenn Du eine *.DOTM oder *.DOT mit den Autotexten erstellt hast, pack sie in das Startup Verzeichnis, schon wird sie immer mit geladen beim Start von Word. Und Du kannst immer die Autotexte verarbeiten.

 

EDIT: In dem freigeschalteten Anhang solltest Du alle Funktionen an das Ende des Scriptes setzen. Erhöht die Übersicht innerhalb des Scriptes.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×