Textselektion

Hi,

ich habe folgendes Problem:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\fs20 *Dieser Text steht im Bereich Detailinfo*\par
}

Aus diesem Text benötige ich den Bereich *Dieser Text steht im Bereich Detailinfo*.

Gibt es eine Möglichkeit dies Herauszufiltern. Der Text welcher davor und danach steht ändert sich hinsichtlich der Länge, so das ich mit einer Teilabfrage nicht weiterkomme.

Vielen Dank im Voraus.

Hallo Albert,

vorausgesetzt, daß das „*“ als Erkennungsmerkmal dient, funktioniert diese Routine:

Sub Findtext()
Dim Searchtext As String
Dim Delimiter As String
Dim Searchtextlength As Integer
Dim Searchtextpart As String
Dim SearchtextresultwithDelimiter As String
Dim SearchtextresultwithoutDelimiter As String
Dim Counter As Integer
Dim Startpoint As Integer
Dim Endpoint As Integer

Searchtext = „{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\fs20 *Dieser Text steht im Bereich Detailinfo*\par}“
Delimiter = „*“
Searchtextlength = Len(Searchtext)

For Counter = 1 To Searchtextlength
Searchtextpart = Mid$(Searchtext, Counter, 1)
If Searchtextpart = Delimiter Then
If Startpoint = 0 Then
Startpoint = Counter
Else
Endpoint = Counter
End If
End If
Next

SearchtextresultwithDelimiter = Mid$(Searchtext, Startpoint, Endpoint - Startpoint + 1)
SearchtextresultwithoutDelimiter = Mid$(Searchtext, Startpoint + 1, Endpoint - Startpoint - 1)

MsgBox SearchtextresultwithDelimiter & Chr$(13) & SearchtextresultwithoutDelimiter

End Sub

Ansonsten müßtest du mir mehr Details geben, an was genau du den Text erkennen willst (z. B. andere Formatierungszeichen oder bestimmte Inhalte.)

Viele Grüße
Jekyll

(Warum die ganze Formatierung flöten geht, ist mir rätselhaft. Aber ich kann die Subroutine auch via Mail zuschicken.)

Vielen Dank,

hat funktioniert und der Text in den *…* wird gerausgefiltert.

Dieser Text sollte jedoch anschließend in einer Tabelle abgespeichert werden.

Vielen Dank im Voraus.

Etwas kürzere Methode

Sub FindText()
 Dim SearchText As String, SearchTextResult As String
 Dim delim1, delim2
 Const Delimiter = "\*"

 SearchText = "{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\fs20 \*Dieser Text steht im Bereich Detailinfo\*\par}"
 delim1 = InStr(1, SearchText, Delimiter) + 1
 delim2 = InStr(delim1 + 1, SearchText, Delimiter)
 SearchTextResult = Mid(SearchText, delim1, delim2 - delim1)

 MsgBox SearchTextResult
End Sub

Tipp an Jekyll:
Die Formatierung geht deswegen flöten, weil führende Leerzeichen automatisch eliminiert werden. Wenn das nicht passieren soll, muss vor den Text(abschnitt) ein (pre) und am Ende ein (/pre) eingefügt werden, wobei anstelle der runden Klammern diese zu verwenden sind:

MfG
Roland

vorausgesetzt, daß das „*“ als Erkennungsmerkmal dient,
funktioniert diese Routine:

Sub Findtext()
Dim Searchtext As String
Dim Delimiter As String
Dim Searchtextlength As Integer
Dim Searchtextpart As String
Dim SearchtextresultwithDelimiter As String
Dim SearchtextresultwithoutDelimiter As String
Dim Counter As Integer
Dim Startpoint As Integer
Dim Endpoint As Integer

Searchtext =
„{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0
Arial;}}{\colortbl
;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\fs20 *Dieser Text
steht im Bereich Detailinfo*\par}“
Delimiter = „*“
Searchtextlength = Len(Searchtext)

For Counter = 1 To Searchtextlength
Searchtextpart = Mid$(Searchtext, Counter, 1)
If Searchtextpart = Delimiter Then
If Startpoint = 0 Then
Startpoint = Counter
Else
Endpoint = Counter
End If
End If
Next

SearchtextresultwithDelimiter = Mid$(Searchtext,
Startpoint, Endpoint - Startpoint + 1)
SearchtextresultwithoutDelimiter = Mid$(Searchtext,
Startpoint + 1, Endpoint - Startpoint - 1)

MsgBox SearchtextresultwithDelimiter & Chr$(13) &
SearchtextresultwithoutDelimiter

End Sub

Viele Grüße
Jekyll

(Warum die ganze Formatierung flöten geht, ist mir rätselhaft.
Aber ich kann die Subroutine auch via Mail zuschicken.)

Hallo Albert,

der Text steht ja in einer Variablen. Und der Inhalt kann einem Feld in einer Tabelle zugewiesen werden. Dazu gibts mehrere Möglichkeiten, unter anderem via eines Update-Befehls mittels SQL. Tipps dazu stehen in der Online-Hilfe für Access bzw. im Archiv bei w-w-w.
Oder du schreibst den Tabellennamen, den Feldnamen und das Selektionskriterium für den Datensatz hierein, dann bastle ich was zusammen.

Viele Grüße
Jekyll