FileWrite in Word

  • Ich möchte gerne mit FileWrite eine Word-Datei schreiben, nun soll die Schriftart von Word Arial und 12pt sein. Könnt Ihr mir helfen

  • OK also erstmal musst du ganz oben im Skript das hier machen:

    Code
    #include "RTF_writer.au3"

    Damit includest du die Datei, mit den Funktionen die du brauchst. (Download unten.) Du solltest sie in den selben Ordner tun, wie dein Code, sonst kann sie nicht includet werden (oder du änderst den pfad oben beim includen).

    Aus der RTF_writer.au3 brauchst du diese 2 Funktionen:

    Code
    _RTFCreateDocument($sDefFont)
    _RTFAppendString($RTF, $sText, $nColor, $iSize, $iFontStyle, $sFont)

    Die ganzen Variablen sind Parameter, die du selbst angeben musst, also ich machs mal als Beispiel für deinen Text mit Arial und 12pt.

    Code
    $temp=_RTFCreateDocument("Arial")

    $temp ist der Rückgabewert von der Funktion. Mit dem kannst du jetzt weiter arbeiten.

    Code
    $temp = _RTFAppendString($temp,  "Das ist der Text, den du schreiben willst" , 0x6F6F6F, 12, 6, "Arial")

    An $temp (was jetzt aus dem Text "Das ist der Text, den du schreiben willst" der Farbe 0x6F6F6F besteht, die Schriftgröße 12 hat....) kannst du auch noch einen weiteren RTF String anhängen, wieder mit _RTFAppendString(...,....,....,....,....,....)

    Am Ende machst du dann einfach noch:

    Code
    FileWrite( @ScriptDir & "\Filename.rtf",$temp)

    Die Datei kannst du dann mit Word öffnen.


    RTF_writer.au3 von !!!!!!Lazycat!!!!!!!

  • Das Funktioniert schon ich kriege bloß probleme mit der Text Ausrichtung da kann man wirklich nix einstellen, gibts da nicht noch was anderes? Oder kann man irgendwie anders ein Word dokument schreiben lassen? wichtig sind die verschiedenen Schriftgrößen und die Text Ausrichtung.

    2 Mal editiert, zuletzt von GreenRanger (4. April 2009 um 18:42)

  • Zitat

    Und wie mach ich es das das geschriebene nicht kursiv und nicht unterstrichen ist

    kann mir einer sagen wie die unterstreichen funktion geht?
    Edit: ahh ok habs ^^

    mfg team2way

    Einmal editiert, zuletzt von team2way (4. April 2009 um 19:53)

  • Gibts irgendwo ne andere UDF für Word Dokumente schreiben oder vielleicht Pdfs ? Weil mit nem normalen TXT Editor kann man ja keine Schriftgröße und Ausrichtung einstellen, dann müsste man alles mit Leerzeichen machen und dann kriegt man ein Problem wenn der Text Variabel ist, weil sich dann alles schön verschiebt :(

    • Offizieller Beitrag

    Hier mal ein kleines Bsp., wie du das realisiertst. Die Funktionen für Save und SaveAs findest du in der Word-UDF.

    Spoiler anzeigen
    [autoit]

    Const $wdAlignParagraphLeft = 0
    Const $wdAlignParagraphCenter = 1
    Const $wdAlignParagraphRight = 2
    Const $wdAlignParagraphJustify = 3
    Const $wdAlignParagraphDistribute = 4
    Const $wdAlignParagraphJustifyMed = 5
    Const $wdAlignParagraphJustifyHi = 7
    Const $wdAlignParagraphJustifyLow = 8
    Const $wdAlignParagraphThaiJustify = 9

    [/autoit] [autoit][/autoit] [autoit]

    $oWord = ObjCreate("Word.Application")
    $oWord.Visible = True
    $oDoc = $oWord.Documents.Open ('C:\Test.doc')

    [/autoit] [autoit][/autoit] [autoit]

    _Test_FormatRange($oWord, $oDoc)

    [/autoit] [autoit][/autoit] [autoit]

    $oDoc.Close
    $oWord.Quit

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Test_FormatRange(ByRef $oWord, ByRef $oDoc)
    ; Bereich festlegen
    ; Range auf dritten Absatz festlegen
    Local $rng = $oDoc.Paragraphs(3).Range
    ; oder Zeichen von - bis
    ;~ Local $rng = $oDoc.Range(10,20)
    ; oder Satz 6
    ;~ Local $rng = $oDoc.Sentences(6)
    ; oder Wort 1
    ;~ Local $rng = $oDoc.Words(1)
    ; oder gemixt, in Satz 5 das 4. Wort
    ;~ Local $rng = $oDoc.Sentences(5).Words(4)

    [/autoit] [autoit][/autoit] [autoit]

    ; Formatieren
    $rng.Font.Size = 14
    $rng.Font.Name = "Arial"
    $rng.Font.Color = 0x0000FF ; in BGR-Format
    $rng.Font.Bold = True

    ; Alignement zentriert
    $rng.ParagraphFormat.Alignment = $wdAlignParagraphCenter
    Sleep (1000)
    ; Alignement rechts
    $rng.ParagraphFormat.Alignment = $wdAlignParagraphRight
    Sleep (1000)
    ; Alignement links
    $rng.ParagraphFormat.Alignment = $wdAlignParagraphLeft
    Sleep (1000)
    ; Alignement Blocksatz
    $rng.ParagraphFormat.Alignment = $wdAlignParagraphJustify

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (1000)
    $rng.Font.Bold = False
    EndFunc

    [/autoit]
    • Offizieller Beitrag
    [autoit]

    ; *******************************************************
    ; Beispiel 1 - Erstellt ein Word-fenster, öffnet ein Dokument, sucht nach "dies",
    ; ersetzt alle Vorkommnisse mit "DIES", schließt Word ohne die Änderungen zu speichern.
    ; *******************************************************
    ;
    #include <Word.au3>
    $oWordApp = _WordCreate(@ScriptDir & "\Test.doc")
    $oDoc = _WordDocGetCollection($oWordApp, 0)
    $oFind = _WordDocFindReplace($oDoc, "dies", "DIES")
    If $oFind Then
    MsgBox(0, "Suchbegriff", "Gefunden und ersetzt.")
    Else
    MsgBox(0, "Suchbegriff", "Nicht gefunden")
    EndIf
    _WordQuit($oWordApp, 0)

    [/autoit]

    Aus: http://www.autoit.de/dokumentation_…FindReplace.htm

    Edit: @team2way: Bitte keine Posts leeren, das ist nicht der Sinn eines Forums, der Zusammenahang und damit der Nutzwert für andere geht verloren.

    peethebee


  • obwohl die datei und das wort existiere kam die meldung nicht gefunden...

  • [autoit]

    ; *******************************************************
    ; Beispiel 1 - Erstellt ein Word-fenster, öffnet ein Dokument, sucht nach "dies",
    ; ersetzt alle Vorkommnisse mit "DIES", schließt Word ohne die Änderungen zu speichern.
    ; *******************************************************
    ;
    #include <Word.au3>
    $oWordApp = _WordCreate(@ScriptDir & "\Test.doc")
    $oDoc = _WordDocGetCollection($oWordApp, 0)
    $oFind = _WordDocFindReplace($oDoc, "dies", "DIES")
    If $oFind = 1 Then
    MsgBox(0, "Suchbegriff", "Gefunden und ersetzt.")
    Else
    MsgBox(0, "Suchbegriff", "Nicht gefunden")
    EndIf
    _WordQuit($oWordApp, 0)

    [/autoit]

    Ungetestet und nicht viel verändert ;)

  • bei mir kommt immer noch die meldung - nicht gefunden
    kann man das ganze vllt vor dem schließen noch speichern
    (vllt das sich das wordfenster nich öffnet - hide)
    ???

    3 Mal editiert, zuletzt von team2way (6. April 2009 um 23:21)