Jump to content

Praktik

Members
  • Gesamte Inhalte

    16
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Praktik

  1. 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

  2. So, ich glaube ich habe es jetzt. Ich habe das Script mal angehängt, es wäre echt super wenn du mal drüber gucken könntest ob das alles so korrekt ist.

     

    Der Import in die Registry funktioniert, ich weiß nur nicht ob da noch etwas fehlerhaft ist das eventuell später zu Problemen führen könnte.

    Nochmals vielen Dank :)

     

    -edit-

    Ich bin jetzt bei der Wordvorlage am überlegen, wie man am besten die Werte aus der Registry an eine bestimmte Stelle im Dokument bekommt. Über Textmarken oder gibt es eine andere Möglichkeit?

     

    Ich habe hier zwar ein Script gefunden aber das geht nur wenn man eine Tabelle hat:

       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
       Key1 = "Benutzername"
       Section1 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
       KeyValue1 = System.PrivateProfileString("", Section1, Key1)
       Key2 = "TelNo"
       Section2 = "HKEY_CURRENT_USER\Software\DokumenteinstellungenWord"
       KeyValue2 = System.PrivateProfileString("", Section2, Key2)
    
       ActiveDocument.Fields(1).Update
       Set MyRange1 = ActiveDocument.Fields(1).Result
       MyRange1.Text = KeyValue1
       ActiveDocument.Fields(2).Update
       Set MyRange2 = ActiveDocument.Fields(2).Result
       MyRange2.Text = KeyValue2
       End Sub
    

    Wie kann man das denn mit dem "ActiveDocument.Bookmarks" Befehl verbinden und sollte es auf AutoOpen oder AutoNew stehen?

     

    Hier gibt es auch noch ein Script, bei dem aber auch etwas fehlt. Was dabei fehlt steht auch in dem Comment darunter, ich weiß nur nicht wo ich das einfügen soll^^:

    http://stackoverflow.com/questions/807266/word-insert-data-from-registry-into-predefined-bookmarks

     

     

    Gruß

    Praktik

    BenutzerdatenV4.zip

  3. So ich habe jetzt ein Script gemacht und bearbeite es gerade, da habe ich noch ein paar Fragen :)

     

    Mein Script fängt mit dem von Nils an, nun steht ja in der ersten Zeile

    strLDAP = SAM2ADInfo("NilsK", "mail")

    Irgendwo habe ich gelesen das man das NilsK natürlich ändern müsse aber in was? Und inwiefern spielt das eine Rolle?

     

    Anschließend kommen deine Scripts. Muss ich im ersten Teil die Daten die aus dem AD ausgelesen werden noch von mir angepasst werden oder ist das egal weil ich das im 2. Script anpasse? Sehe ich das richtig, damit die entsprechenden Daten in die Registry geschrieben werden, muss es dann ungefähr so aus sehen:

    inRegSchreiben regSchluessel, "Benutzername", strName
    inRegSchreiben regSchluessel, "Ort", strOrt
    inRegSchreiben regSchluessel, "mail", strMail
    etc
    

     

    Und in dem VBA Script steht:

    ("HKEY_CURRENT_USER\Software\DeinSchlüssel\NocheinSchlüssel\" & strSchluessel)

     

    Da muss dann "DeinSchlüssel\NocheinSchlüssel" durch den Pfad im Registry Script ersetzt werden also "VB and VBA Program Settings\Dokumentvorlagen\Benutzereinstellungen"

     

    Vielen Dank im Voraus :)

     

    Gruß

    Praktik

  4. Hey Sunny,

     

    so richtig verstanden habe ich das ganze glaub ich noch nicht :D

     

    Wie/wo läuft die verknüpfung der wordvorlage mit den infos in der registry? Sind deine Skripte jetzt VBS oder VBA?

    Um die Zeichenbegrenzung zu umgehen, magst du mir eine PM schicken mit dem Skript, vielleicht verstehe ich es dann besser :)

    Danke im Voraus.

     

    Gruß

    Praktik

  5. Hallo Sunny,

     

    vielen Dank für die Rückmeldungen. Wahrscheinlich habe ich den Wald vor lauter Bäumen schon nicht mehr gesehen :D

     

    Ich werde deine Idee mal weitergeben, vielleicht ist es auch für uns die bessere Lösung, danke :)

     

    Gruß

    Praktik

     

    PS @ICEMAN:

    Genau so ein Skript habe ich schon, welches auch funktioniert aber trotzdem danke :)

  6. Es soll aber so sein wie es jetzt ist damit die Datei in den anderen Vorlagen als AutoText verwendet werden kann. Und für Autotext muss die Datei halt .dotx sein. Kann doch nicht so schwer sein das in eine .dotx Datei umzuwandeln/zu speichern.

     

    VBA kann es doch auch irgendwie:

     

    FileFormat:=wdFormatXMLTemplate, 
    CompatibilityMode:=14
    

     

    Und diese Befehle sind nicht auf mein Skript anwendbar? Das Bezweifle ich.

     

    Und jetzt soll ich das ganze Skript umändern damit es in die Registry schreibt? Vergiss es, das ist viel zu umständlich. Zumal ich es bei meinem Kollegen nicht durchkriegen würde.

     

    Gruß

    Praktik

     

    -edit-

     

    So ich habe es jetzt, ein einfaches (,14) ohne Klammern hinter dem Speicherpfad hat genügt um es als .dotx abspeichern zu können. Das war auch total umständlich - LOL

     

    Jetzt soll der Text, der in dem Word Dokument steht noch als Autotext gespeichert werden damit er als Schnellbaustein zur Verfügung steht. Aber da kann mir hier wahrscheinlich auch wieder keine helfen ;)

  7. Hier ist der Code:

     

    Set WshShell = WScript.CreateObject("Wscript.Shell")
    AppData = WshShell.ExpandEnvironmentStrings("%AppData%")
    Set objSysInfo = CreateObject("ADSystemInfo")
    
    strUser = objSysInfo.UserName
    Set objUser = GetObject("LDAP://" & strUser)
    
    Set objWord = CreateObject("Word.Application")
    objWord.UserName = objUser.givenName & " " & objUser.SN
    objWord.UserInitials = Left(objUser.givenName, 1) & Left(objUser.SN, 1)
    objWord.UserAddress = "Abteilung" & Chr(13) & objUser.department & Chr(13) & objUser.givenName & " " & objUser.SN & Chr(13) & _ 
    objUser.telephoneNumber & Chr(13) & _ 
    objUser.mail
    
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    
    Set objDoc = objWord.Documents.Add()
    Set objSelection = objWord.Selection
    
    objSelection.Font.Name = "News Gothic"
    objSelection.Font.Size = "7"
    objSelection.TypeText "Abteilung" & Chr(13) & objUser.department & Chr(13) & objUser.givenName & " " & objUser.SN & Chr(13) & _
    objUser.telephoneNumber & Chr(13) & _ 
    objUser.mail
    objSelection.TypeParagraph()
    
    objDoc.SaveAs(AppData & "\Microsoft" & "\Document Building Blocks" & "\1031" & "\Benutzerdaten.dotx")
    
    objWord.Quit

     

    So wie er jetzt ist funktioniert er zwar, aber man kann die .dotx Datei nicht öffnen. Habe eben gerade etwas mit CompatibilityMode gefunden was man dahinter setzen kann, da bin ich gerade am ausprobieren.

     

    Zum bearbeiten nutze ich derzeit Notepad++, das geht auch^^

     

    -edit-

    Ich sehe gerade CompatibilityMode wurde in Zusammenhang mit VBA nicht mit VBS erwähnt...

  8. Hallo,

     

    erstmal vielen Dank für die Antworten. Ich bin mittlerweile ein ganzes Stück weiter.

     

    Ich habe jetzt ein VBSkript, mit dem Daten aus dem AD in das Postanschrift Feld von Word geschrieben werden. Außerdem wird im Benutzerordner in einem Verzeichnis eine Datei mit den Daten aus dem AD erstellt.

     

    Im Grunde ist mein Anfangsproblem gelöst nur habe ich jetzt ein Problem mit dem VBSkript. Wenn er am Ende des Skriptes die Datei abspeichert, so speichert er sie nicht in einer Vorlagen Datei.

     

    .doc und auch .docx funktionieren aber sobald ich es auf .dotx ändere sagt er immer die Datei wäre Fehlerhaft.

     

    Frage ist also, wie kann ich das VBSkript dazu bringen eine Word Datei als Vorlage abzuspeichern?

     

    Gruß

    Praktik

  9. Und wenn ihr noch nicht genug habt, dann könntet ihr mir ja vll. bei diesem Skript helfen:

    Sub TextImport()

     

    Dim dlgtext As FileDialog

    Dim strText As String

    Dim rng As Word.Range

    Dim bmkBeginn As Word.Bookmark

    Dim bmkEnde As Word.Bookmark

     

    Dim fsize As Long

    Dim fentry As Single

     

    fsize = 9

    fentry = 2

     

    Set dlgtext = Application.FileDialog(msoFileDialogFilePicker)

    dlgtext.Title = "Auswahl der Textdatei"

    dlgtext.Filters.Add "Textdateien", "*.txt", 1

    dlgtext.ButtonName = "Import"

     

    With dlgtext

    If .Show = -1 Then

    strText = dlgtext.SelectedItems.Item(1)

    ' frmText.Show

     

    Set rng = Selection.Paragraphs(1).Range.Duplicate

    rng.Collapse wdCollapseStart

    rng.InsertParagraph

    rng.Collapse wdCollapseEnd

    Set bmkEnde = rng.Bookmarks.Add(Name:="BMEnde", Range:=rng)

    rng.Collapse wdCollapseStart

    rng.MoveEnd wdParagraph, -1

    rng.Collapse wdCollapseStart

    rng.InsertFile (strText)

    rng.Collapse wdCollapseStart

    Set bmkBeginn = rng.Bookmarks.Add(Name:="BMBeginn", Range:=rng)

    Set rng = ActiveDocument.Range(Start:=bmkBeginn.Range.Start, End:=bmkEnde.Range.End)

    With rng

    .Font.Size = fsize

    .ParagraphFormat.Alignment = wdAlignParagraphLeft

    .ParagraphFormat.LeftIndent = CentimetersToPoints(fentry)

    .Bookmarks.Add Name:="Einfuegetext", Range:=rng

    .Collapse wdCollapseEnd

    End With

    Call TexteFormatieren(ActiveDocument.Bookmarks("Einfuegetext").Range)

    End If

    End With

    dlgtext.Filters.Clear

    Set dlgtext = Nothing

    Set rng = Nothing

    Set bmkBeginn = Nothing

    Set bmkEnde = Nothing

     

    End Sub

     

    Sub TexteFormatieren(ByVal rngTM As Word.Range)

     

    Dim para As Word.Paragraph

     

    For Each para In rngTM.Paragraphs

    If InStr(1, para.Range.Text, "Pressures:", vbTextCompare) > 0 Then

    para.Range.Font.Bold = True

    para.Range.Font.Underline = wdUnderlineSingle

    End If

    Next para

     

    End Sub

     

    Was bei diesem Skript verändert werden müsste wäre:

     

    Das er die .txt Datei automatisch einliest, das Makro würde zu einer Vorlage gehören und beim öffnen soll die .txt Datei eingelesen werden.

    Und das die Schriftart und größe automatisch umgewandelt wird.

     

    Gruß

    Praktik

  10. Hast Du denn mit VB Scripten schon einmal gearbeitet?

    Nein

     

    Wie Du dann in Word auf diese TXT zugreifen kannst, weiß ich auch nicht. Aber in einem Word Forum sollte sich das finden lassen.

    Sieht bisher aber nicht danach aus

     

    Die Foren sind im Internet und wenn ich danach suche, werde ich erschlagen mit Ergebnissen. Mir dünkt, Du hast bisher noch gar nicht richtig gesucht.

     

    Mir ist schon klar das die Foren im Internet sind, ich meinte über Google habe ich nichts dergleichen gefunden also bleibt mir nur das eigene Nachfragen über Foren.

    Und dir dünkt falsch, denn ich bin schon den ganzen Tag auf der Suche nach einer Lösung...

     

    Um AD Daten in eine txt Datei zu bringen habe ich bisher diesen Befehl gefunden:

    @echo off & setlocal

    set "G=%temp%\GetL.vbs"

    >"%G%" echo WScript.Echo GetObject("LDAP://" ^& CreateObject("ADSystemInfo").UserName).l

    for /f "delims=" %%i in ('cscript //nologo "%G%"') do set "Ort=%%i"

    echo %Ort%

     

    Allerdings gibt der nur ein Attribut wieder und nicht mehrere. Aber selbst wenn ich das komplett hätte, wüsste ich dennoch nicht wie ich das in eine Word Datei importieren kann. Ein weiterer Arbeitstag an dem ich nicht weiter gekommen bin... :(

     

    Ich habe auch noch dieses Makro gefunden, dass aber auch nicht funktioniert:

    Sub Insert_EinzelZahlungen()

    Dim oDoc As Document

    Set oDoc = ActiveDocument

    Dim nDoc As Document

    Set nDoc = Documents.Open(FileName:="c:\test.txt", Visible:=False)

    oDoc.Bookmarks("test").Range.Text = nDoc.Range.Text

    nDoc.Close

    End Sub

  11. Hi,

     

    derzeit gibt es noch keinen Code in der Vorlage, den soll ich ja gerade herausfinden womit ich leider nicht weiter komme :(

     

    Ich muss wissen, wie bei der Anmeldung Daten aus dem AD lokal in einer Datei gespeichert werden und welcher Befehl/Code bei Word stehen muss damit diese Datei ausgelesen wird.

     

    Im Internet findet man dazu aber nichts also bleiben mir nur Foren und die waren bis jetzt leider auch nicht sehr Hilfreich.

     

    Gruß

    Praktik

  12. Hallo zusammen,

     

    für eine Word 2007 Vorlage sollen Daten aus dem Active Directory ausgelesen werden.

     

    ABER: Es soll nur einmal ausgelesen werden und dann in eine Zwischendatei gespeichert werden und aus dieser Zwischendatei sollen dann in Zukunft die Daten ausgelesen werden damit auch Notebooknutzer die Vorlagen nutzen können wenn diese unterweg sind.

     

    Es gibt ja eine Möglichkeit mit Hilfe von Textmarken dies zu machen, nur fragt er dann jedesmal vom AD ab und das darf nicht.

     

    Hoffe ihr könnt mir helfen.

     

    Gruß

    Praktik

×
×
  • Neu erstellen...