Word UDF - _WordDocFindReplace

  • Hallo,

    mit der Funktion _WordDocFindReplace, aus dem Word-UDF, ist der ReplaceString auf max. 255 Zeichen beschränkt.
    Ist es möglich, diese Beschränkung aufzuheben? Wie?

    Ziel ist es, den Ersetzstring (Replacestring) in der Länge unbeschränkt zu verwenden.
    Beispiel:

    [autoit]


    $oFind = _WordDocFindReplace($oDoc,"dx_Produkt",$crm_produkt)

    [/autoit]


    Im Worddokument ($oDoc) steht der Suchstring "dx_Produkt" und soll durch die vorher gefüllte Variable "$crm_produkt" ersetzt werden. Die Produktbeschreibung ist regelmäßig >255 Zeichen lang.

    2 Mal editiert, zuletzt von qwert23 (30. Januar 2013 um 19:20)

  • Hängt vermutlich von der Word Version ab. Welches Word setzt Du ein?

  • Word 2010 setze ich ein.
    Die Längenbeschränkung ist auch in 2003 vorhanden.
    Meldung aus der Word.au3:
    C:\AutoIt3\Include\word.au3 (749) : ==> Error in expression.:
    $return = .Execute($s_FindText, $f_MatchCase, $f_MatchWholeWord, $f_MatchWildcards, $f_MatchSoundsLike, $f_MatchAllWordForms, $f_Forward, $i_Wrap, $f_Format, $s_ReplaceWith, $i_Replace)
    $return = .Execute($s_FindText, $f_MatchCase, $f_MatchWholeWord, $f_MatchWildcards, $f_MatchSoundsLike, $f_MatchAllWordForms, $f_Forward, $i_Wrap, $f_Format, $s_ReplaceWith, $i_Replace)^ ERROR

  • VIelleicht hilft das. Neuen Text in das Clipboard kopieren und den Parameter $s_ReplaceWith als "^C" angeben.
    http://gregmaxey.mvps.org/word_tip_pages…ong_string.html

  • je, das hilft. Danke.
    Aktuell teile ich den String > 255 Zeichen in Teilstrings zu 200 Zeichen auf und hänge ein Kürzel ran.
    Dieses Kürzel dient dann zum weiteren Suchen/ersetzen der weiteren Zeichen. Das letzte Kürzel wird einfach durch "" ersetzt.

    Spoiler anzeigen
    [autoit]


    ; -----------------------------------teilstringsaufteilen
    If StringLen($oFind) >250 Then
    $anzLV = ceiling(StringLen($oFind) / 200) ; nächste ganzzahl
    For $i = 1 to $anzLV
    $teilstrg[$i] = StringLeft($oFind,200) & "x1bn3"&$i+1 ; in teilstrings aufteilen, anhang dient zum lfd such/ersetz in word
    $oFind = StringTrimLeft($oFind,200)
    Next

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

    _WordDocFindReplace($oDoc,$aResult[$y],$teilstrg[1])

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

    for $i = 2 to $anzLV
    _WordDocFindReplace($oDoc,"x1bn3"&$i,$teilstrg[$i])
    Next
    _WordDocFindReplace($oDoc,"x1bn3"&$anzLv+1,"") ; letzten merkerwert entfernen
    Else
    _WordDocFindReplace($oDoc,$aResult[$y],$oFind)
    EndIf
    ; -------------------------------ende teilstrings

    [/autoit]