Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Zeilenumbrüche ersetzen





Frage

Hallo an alle, ich habe das folgende Problem: Nachdem ich einige Tabellen von Excel in Access importiert habe, werden die Zeileunbrüche nicht mehr richtig dargestellt. Dies ist sicher einigen bekannt. Ich habe jetzt versucht, mir eine Routine zu schreiben, welche die Ersetzung der betreffenden Zeichenfolgen automatisch vornimmt. Daran bin ich jedoch gescheitert. Ich habe es über zwei "For Each..."-Schleifen versucht. Leider weiß ich nicht, wie man die Zeilen anspricht. Wenn mir jemand mit meiner Variante helfen kann oder eine andere funktioniertende Variante anzubieten hat, würde ich mich freuen, sie zu hören. Danke im Voraus MfG renewa

Antwort 1 von lleopard

Hallöle,

hier der Code:

Function FeldinhalteErsetzen(r As Recordset, Feld As String, ALt As String, Neu As String)
If r.RecordCount = 0 Then Exit Function
r.MoveFirst
Do While Not r.EOF
r.Edit
DoCmd.Hourglass False
r(Feld) = TextErsetzen(r(Feld), ALt, Neu)
r.Update
r.MoveNext
Loop
End Function


Function TextErsetzen(ByVal Text As Variant, Suchen As String, _
Ersetzen As String) As Variant

Dim Position As Integer
Dim Länge As Integer

If IsNull(Text) Then Exit Function

Länge = Len(Suchen)

Position = 0

Do
Position = InStr(Position + 1, Text, Suchen)
If Position = 0 Then Exit Do
Text = Left(Text, Position - 1) + Ersetzen _
+ Mid(Text, Position + Länge)
Loop

TextErsetzen = Text

End Function


Und diese in einem neuen Modul einfach abspeichern und zB mit:

Sub ErsetzenSonderzeichen()

Dim AktuelleDB As Database
Dim r As Recordset

Set AktuelleDB = CurrentDb

Set r = AktuelleDB.OpenRecordset("[meineTabelle]", dbOpenTable)

FeldinhalteErsetzen r, "[MeinFeldname]", vbcrlf, " "

end sub

Das ersetzt Absatzmarken durch Leerzeichen. Kannst natürlich einfach anpassen.

Gruß Leo

Antwort 2 von renewa

Hallo lleopard,

wow und vielen Dank für deine Hilfe. Leider funktioniert es nicht ganz. Ich bekomme einen Überlauf an der Stelle
Text = Left(Text, Position - 1) + Ersetzen + Mid(Text, Position + Länge)


Ich habe nur den Aufruf der Funktion FeldinhalteErsetzen geändert, damit die Vierecke, die das Importieren anstelle eines Zeilenumbruchs erzeugt, durch
FeldinhalteErsetzen r, Spalte6, vbLf, vbCrLf
ersetzt.

Kannst du mir nochmal helfen und mir sagen, wie ich den Überlauf umgehen kann? Oder ist der Datensatz zu groß?

Antwort 3 von lleopard

Hallo renewa,

das Problem ist, daß du natürlich in dem DS vbLf durch vbCrLf ersetzt und somit wieder ein vbLf in der zeile gefunden wird.

ich denke du solltet das lösen indem du 2 Durchläufe machst, wenn du diesen Eretzungsvorgang so umsetzen willst.

1. Ersetze vbCrLf durch zb "xxx", dann sind alle Zeilenumbrüche weg.

2. Ersetze nun wieder "xxx" durch vbLf.

Dann sollte das Überlauf-Problem behoben sein.

Gruß Leo

Antwort 4 von renewa

Hallo,

ja du hattest vollkommen Recht. Es funktioniert jetzt einwandfrei. Einmal mehr bin ich dir zum Dank verpflichtet. Wo wohnst du und wie kann ich dir ein Bier spendieren? :)

Dankeschön!

MfG
renewa

Antwort 5 von lleopard

Hi renewa,

büdde. Wer hier schreibt, hilft doch gerne. N Bierchen, da sage ich aber auch nicht nein. wenn du mal in die Gegend von Braunschweig kommst, sag bescheid ;-)

cu leo

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: