Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Sorehead am 14.11.05 - 11:03:53

Titel: Import MS Word -> RT -> Stringmanipulation
Beitrag von: Sorehead am 14.11.05 - 11:03:53
Hallo!

Ich brauche mal Eure Hilfe.

Ich muss einen Import aus MS Word machen. Dieser Import (über die Zwischenablage) landet in einem Richtext-Feld. Nun muss ich diesen Text nach chr(10) und chr(13) durchsuchen und ein paar Manipulationen machen. Bei dem Versuch den Feldinhalt per "FieldGetText" zu extrahieren, geht ja die gesamte Formatierung verloren. Weiß jemand ne andere Lösung?

Ich muss den Text mit Formatierung also in eine Variable in Script haben.

Vielen Dank schonmal im voraus...

Gruß, Sascha Meyer
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: Axel am 14.11.05 - 11:26:22
Hi,

schau dir mal die neuen Klassen für Richtext-Felder in der Designer-Hilfe an.

Insbesondere die FindAndReplace - Methode aus der Klasse NotesRichTextRange. Damit müsste das eventuell machbar sein.


Axel
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: Sorehead am 14.11.05 - 11:35:02
Nein, das geht nicht, da ich in verschiedenen Schleifen nach chr(10) und chr(13) suche und bestimmte Textteile währenddessen lösche..

Der Code siht ungefähr so aus..
Code
paragraph = uidoc.FieldGetText("Stellungnahme") + Chr(13) + Chr(10)
	i = 1
	While i <8 
		If Left(paragraph,1) = Chr(10) Then
			i = i +1
		End If
		paragraph = Right(paragraph,Len(paragraph)-1)
	Wend
	For i =1 To Len(paragraph)
		yat2 = Mid(paragraph,i,1)
		If yat2 = Chr(9) Then
			yat = yat + "    "
		Else
			If yat2 = Chr(13) Then
				yat = yat + Chr(13)
			Else
				yat = yat + yat2
			End If
		End If
	Next i
	Call uidoc.FieldSetText("Stellungnahme",uidoc.FieldgetText("Stellungnahme") + yat)
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: Axel am 14.11.05 - 11:57:56
Hi,

dann versuch's doch mal mit notesRichTextItem.GetFormattedText.


Axel
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: koehlerbv am 14.11.05 - 12:00:29
GetFormattedText liefert auch nur plain text. Ist etwas ungeschickt benamst, diese Routine ..

Bernhard
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: Axel am 14.11.05 - 12:03:57
Bis du dir da sicher? Die Hilfe sagt nämlich was anderes.

Axel
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: koehlerbv am 14.11.05 - 12:24:00
Die Hilfe sagt gleich einleitend: "Returns the contents of a rich text item as plain text."

Ab R6 gibt es aber nun auch eine Methode mit passenderem Namen "GetUnformattedText"  :)

Bernhard
Titel: Re: Import MS Word -> RT -> Stringmanipulation
Beitrag von: Sorehead am 17.11.05 - 15:45:31
So, habe das jetzt auf der Seite von Word gemacht...

Code
Sub manipulateString(WordApp As Variant)
'Nachbau der Selektion aus dem Access-Script
'Es werden bestimmte Absätze der Stellungsnahme verworfen
	
	Dim i As Integer
	
	'Tabstopps durch 4 Leerzeichen ersetzen
	Call WordApp.Selection.goto( 3,1) 'What:=wdGoToLine, Which:=wdGoToFirst
	With WordApp.Selection
		'Parameter
		.Find.Text = Chr(9)
		.Find.Replacement.Text = "    "
		.Find.Forward = True
		.Find.MatchCase = False
		.Find.MatchWholeWord = False
		.Find.MatchWildcards = False
		.Find.MatchSoundsLike = False
		.Find.MatchAllWordForms = False
		
		While .Find.Execute()
			'alles ersetzen
		Wend
		
		'Die ersten 7 Absätze nicht Markieren
		Call WordApp.Selection.goto( 3,1) 'What:=wdGoToLine, Which:=wdGoToFirst
		'Parameter
		.Find.Text = Chr(13)
		.Find.Replacement.Text = ""
		.Find.Forward = True
		.Find.MatchCase = False
		.Find.MatchWholeWord = False
		.Find.MatchWildcards = False
		.Find.MatchSoundsLike = False
		.Find.MatchAllWordForms = False
		
		For i = 1 To 7
			Call .Find.Execute()
			Call .MoveRight(1,1,0) ' unit:=wdCharacter, count:=1, extend:=wdMove
		Next
		Call .MoveDown(7,10,1) 'Unit:=wdScreen, Count:=10, Extend:=wdExtend
		Call .EndKey(5,1) ' Unit:=wdLine, Extend:=wdExtend
		
	End With
	
End Sub