Praktik 10 Geschrieben 27. Januar 2012 Autor Melden Teilen Geschrieben 27. Januar 2012 (bearbeitet) 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 27. Januar 2012 von Praktik Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 30. Januar 2012 Melden Teilen Geschrieben 30. Januar 2012 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.