AW: RTF-Format in Excel?
15.07.2008 10:32:00
Reinhard
Hi Heiko,
aus dem Internet gefischt, irgendein Sascha postete mal die nachfolgende Funktion. RTF ist wohl das aus Word bekannte Rich Text Format für Texte. Unterlagen über den Aufbau von RTF-Dateien habe ich nicht.
Du hast in D2 stehen:
{\rtf1\ansi\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2 Arial;}{\f1\fswiss\fprq2\fcharset0 Arial;}}
\viewkind4\uc1\pard\f0\fs18 Vierbeinhocker aus Rundstahlrohr \f1 nach RAL pulverbeschichtet\f0
\par \f1 Sitzfl\'e4che aus mehrschichtverleimten Buchespe
=RTF2TEXT(D2) macht daraus:
Vierbeinhocker aus Rundstahlrohr nach RAL pulverbeschichtet Sitzflä
Schon mal ein Anfang, Frage noch offen.
Option Explicit
'Option Compare Database
'Konvertiert einen RTF-Text in Plain Text
'Funktioniert nur bei einfacheren RTF-Dokumenten
'(Schwierigkeiten gibt es bei eigefügten Bildern und bei Aufzählungen und Tabellen)
Public Function RTF2TEXT(strRTF As String) As String
Dim S As String, TX As String
Dim n As Long, m As Long, nPar As Long, flg As Boolean
On Error GoTo Fehler
If Len(strRTF) = 0 Then Exit Function
n = 1
For n = 1 To Len(strRTF)
If Mid(strRTF, n, 1) = "{" Then nPar = nPar + 1
If Mid(strRTF, n, 1) = "}" Then nPar = nPar - 1
If nPar = 2 Then flg = True
If flg And nPar = 1 Then Exit For
Next n
n = n + 1
Do
Do While Asc(Mid(strRTF, n, 1)) 0) Or _
(Mid(strRTF, m - 4, 4) = "cell") Then TX = TX & Chr(9)
Jump2:
n = InStr(m + 1, strRTF, "\", vbTextCompare)
If n = 0 Then Exit Do
If Mid(strRTF, m + 1, 1) = "{" Then
n = 1 + InStr(m + 1, strRTF, "}", vbTextCompare)
m = n - 1
GoTo Jump2
End If
TX = TX & Mid(strRTF, m + 1, n - m - 1)
If Mid(strRTF, n + 1, 1) = "'" Then
TX = TX & Chr(Val("&h" & Mid(strRTF, n + 2, 2)))
m = n + 3
GoTo Jump2
End If
If Mid(strRTF, n + 1, 3) = "tab" Then
TX = TX & Chr(9)
n = n + 3
GoTo Jump1
End If
Loop
Ende:
RTF2TEXT = TX
Exit Function
Fehler:
MsgBox Err.Description
Resume Ende
End Function
Gruß
Reinhard