Zum Inhalt wechseln


Foto

Active Directory Daten in Word


  • Bitte melde dich an um zu Antworten
31 Antworten in diesem Thema

#31 Praktik

Praktik

    Newbie

  • 16 Beiträge

 

Geschrieben 27. Januar 2012 - 13:45

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, 27. Januar 2012 - 15:54.


#32 Sunny61

Sunny61

    Expert Member

  • 22.238 Beiträge

 

Geschrieben 30. Januar 2012 - 09:28

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.
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/