Seite 1 von 1

Word 6500 Bereich kann nicht gelöscht werden [ERLEDIGT]

Verfasst: Do, 19. Aug 2010 1:33
von Werner_Bayern
Servus,

wer kann mir dazu was sagen? Geht um das Suchen und Ersetzen von Worten eines Word-Dokumentes.
Bei folgender Schleife knallt es dann bei versch. Durchläufen, also konkret funktionieren die ersten 6 Worte, beim 7. knallt es:

Code: Alles auswählen

for i := 1 to nWorte
   oWords:Item(i):Text := aWorte[i]
//   oWords:Item(i):SetProperty("Text", aWorte[i])
next i
Beide Werte enthalten den Zeichen-Wert "17". Hab keine Ahnung, woran es liegen könnte.

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 8:55
von AUGE_OHR
Werner_Bayern hat geschrieben:Bei folgender Schleife knallt es dann bei versch. Durchläufen, also konkret funktionieren die ersten 6 Worte, beim 7. knallt es:
...
Beide Werte enthalten den Zeichen-Wert "17". Hab keine Ahnung, woran es liegen könnte.
versuche ein SLEEP(0) ... oder SLEEP(10)

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 10:18
von Tom
Ich vermute eher, dass es daran liegt, dass das zu ersetzende Objekt mit anderen verknüpft ist oder tatsächlich ein Formularobjekt darstellt. Oder sogar Bestandteil einer Tabelle ist.

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 10:42
von Werner_Bayern
AUGE_OHR hat geschrieben:versuche ein SLEEP(0) ... oder SLEEP(10)
Servus Jimmy,

hatte ich schon versucht, kein Erfolg.

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 10:53
von Werner_Bayern
Servus Tom,

keine Tabelle, hier der entsprechende Code:

Code: Alles auswählen

oWord := CreateObject("Word.Application")
IF Empty( oWord )
  MsgBox( "Microsoft Word ist nicht installiert" )
  return NIL
ENDIF
oWord := oWord:dynamicCast(ActiveXObject())
oWord:Visible := .f.
oWord:documents:open(cDatei, .f., .t.)    // keine Konvertierungen anzeigen, readonly
oDoc := oWord:ActiveDocument
oWords := oDoc:Words // alle Wörter des Dokuments
nWorte := oWords:Count
aWorte := array(nWorte)
for i := 1 to nWorte
   aWorte[i] := oWords:Item(i):Text   // jedes Wort des Textes in das Array einlesen
next i
for i := 1 to nWorte
   msgbox(oWords:Item(i):Text, aWorte[i])
   oWords:Item(i):Text := aWorte[i]
//   oWords:Item(i):SetProperty("Text", aWorte[i])
next i

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 11:22
von brandelh
Hi,
oWord:documents:open(cDatei, .f., .t.) // keine Konvertierungen anzeigen, readonly
wenn ich deinen Kommentar richtig verstehe ist das Dokument "READ ONLY" geöffnet, da kann man auch nichts löschen ;-)

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 12:23
von Werner_Bayern
Servus Hubert,

nein, das wäre zu einfach :wink:

Ich speichere ja nicht, es werden nur die Worte getauscht. Ausserdem knallt es ja erst im 7. Durchlauf der Schleife, also beim 7. Wort im Dokument. Gleiches Verfahren läuft einwandfrei, wenn ich direkt gleich sofort tausche:

Code: Alles auswählen

for i := 1 to oWords:Count // Anzahl der Wörter, Count ändert sich dynamisch während des Ersetzens
      oWords:Item(i):Text := aErsetz[nPos] + " "
next

Re: Word Fehler 6500 Der Bereich kann nicht gelöscht werden

Verfasst: Do, 19. Aug 2010 13:12
von Werner_Bayern
Ich denke, ich hab den Fehler gefunden: Das 7. Wort ist eine Feldvariable im Text, also eine Feldfunktion (Createdate). Die darf ich offensichtlich nicht antasten.
Vor allem erkennt Word das nicht richtig als Wort. Die Feldvariable hat ja z. B. den Wert "19.07.2010", in Wirklichkeit steckt da ja "{CREATEDATE \@"dd.MM.yyyy" \*MERGEFORMAT}" dahinter. Trotzdem meldet mir oWords:Item(7):Text ein "19".