Autor Thema: Import MS Word -> RT -> Stringmanipulation  (Gelesen 2567 mal)

Offline Sorehead

  • Frischling
  • *
  • Beiträge: 3
Import MS Word -> RT -> Stringmanipulation
« 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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #1 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Sorehead

  • Frischling
  • *
  • Beiträge: 3
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #2 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)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #3 am: 14.11.05 - 11:57:56 »
Hi,

dann versuch's doch mal mit notesRichTextItem.GetFormattedText.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #4 am: 14.11.05 - 12:00:29 »
GetFormattedText liefert auch nur plain text. Ist etwas ungeschickt benamst, diese Routine ..

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #5 am: 14.11.05 - 12:03:57 »
Bis du dir da sicher? Die Hilfe sagt nämlich was anderes.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #6 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

Offline Sorehead

  • Frischling
  • *
  • Beiträge: 3
Re: Import MS Word -> RT -> Stringmanipulation
« Antwort #7 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz