2016-04-11 3 views
0

In meinem Zugriff eines Benutzers bilden einen Text in einem Textblock eingeben. Normalerweise gibt es mehrere Zeilenumbrüche in diesem Text (also wird in den Eigenschaften des Textfelds die Eingabefunktion so geändert, dass ein Zeilenumbruch zurückgegeben wird, anstatt in einen anderen Datensatz zu wechseln). Suchen und Ersetzen-Funktion ersetzenAccess VBA - Text suchen und ersetzen für Zeilenumbrüche kehrt seltsame Blöcke in meinem Word-Dokument

Der Text, der ein Benutzer in der Form wird Text in einem Word-Dokument mit der VBA: obwohl

With objWord.Selection.Find 
     .Forward = True 
     .Wrap = 1 
     .ClearFormatting 

     .Execute2007 FindText:="{IndexText}", ReplaceWith:=NewIndexText, Replace:=2 'string is less than 255 so replace it 

    End With 
Dies funktioniert gut, wenn der Benutzer verwendet Zeilenumbrüche im Text ich erhalte diese seltsamen Blöcke in meinem Word-Dokument:

enter image description here

Wie kann ich zeigen, bekommen die Zeilenumbrüche korrekt, ohne dass die Blöcke (und auch ohne Zeilenumbruch Symbol).

P.S. Ich habe auch Code für die Verarbeitung von Text mit mehr als 255 Zeichen eingebaut, aber ich habe den Code einfach nicht hochgeladen, da er für diese Frage nicht benötigt wird.

+0

Danke @CindyMeister Habe herausgefunden, dass meine Zeichenfolge ein LineFeed in Access (Chr10) enthielt, das Word nicht versteht. Ich habe eine Ersetzung in meiner Zeichenfolge vorgenommen, um alle Chr (10) auf eine leere Zeichenfolge zu setzen: 'NewIndexText = Replace (NewIndexText, Chr (10)," ") – Nicolas

+0

Großartig :-) Ich habe die Informationen in eine" Antwort "eingefügt: -) –

Antwort

1

Word verwendet nur 13 ANSI für Absatzumbrüche.

(What you „neue Zeile“ nennen, aber eine Linie ist etwas anderes in Word und ist ANSI 11. Ziffer erzeugt wird, durch Drücken der Eingabetaste;. Neue Linie von Shift + Enter)

Wenn ein Programm Hände Text zu Word, das ANSI 10 oder eine Kombination von 10 und 13 oder sogar etwas ganz anderes verwendet, erhalten Sie Boxen oder andere ungerade Verhalten. Finde heraus, was die Stelle (n) ist (sind) und verwenden Sie die Ersetzen-Funktion auf NewIndexText mit ANSI zu ersetzen 13.

Zum Beispiel (von OP Kommentar genommen), da der Zugang fügt eine ANSI-10:

NewIndexText = Replace(NewIndexText, Chr(10), "") 
0

Das Bild von Word zeigt, dass es einige nicht druckbare charcaters im String NewIndexText.

Versuchen Sie herauszufinden, welche auf diese und ersetzen Sie sie vor Ihrer Routine. Um sie zu identifizieren Sie diesen Code verwenden:

Dim c as String 
For Each c in NewIndexText 
    Debug.Print c & " " & Chr(c) 
Next 
+0

Leider hat das nicht funktioniert. Kann eine foreach auf einer Schnur nicht tun, konnte nur ein Objekt/eine Variante benutzen. Trotzdem habe ich das Problem mit Cindy Meisters Hilfe behoben. Trotzdem danke! – Nicolas

Verwandte Themen