Steini1980 - Mo 02.03.09 20:17
Titel: MS Word alle Felder aktualisieren / berechnen...
Hallo ich habe ein Rechnungsformular in MS Word und möchte nach dem Befüllen des Formulars aus Delphi alle Felder neu berechnen. Normalerweise geschieht dies erst, wenn ich auf die Druckvorschau oder auf Drucken gehe. Ich möchte aber, dass Standardmäßig alle Felder aktualisiert werden.
Ich habe schon lange Zeit danach gegoogelt und zu folgendem Macro gekommen, und habe versucht dies in Delphi umzusetzen. Offenbar bin ich zu blöd:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Sub UpdateAllFields() Dim aStory As Range Dim aField As Field
For Each aStory In ActiveDocument.StoryRanges For Each aField In aStory.Fields aField.Update Next aField Next aStory End Sub |
Wie müsste der Code dann in Delphi aussehen? Angefangen hab ich mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| For i:=0 to wDoc.StoryRanges.Count do begin For j:=0 to ??? do begin end; end; |
Keldorn - Mo 02.03.09 20:56
Hallo,
also
Zitat: |
For i:=0 to wDoc.StoryRanges.Count do begin
|
ist schonmal suboptimal ;-), da zähslt du auf alle Fälle ein Item zuviel
entweder
Delphi-Quelltext
1:
| For i:=0 to wDoc.StoryRanges.Count-1 do begin |
oder
Delphi-Quelltext
1:
| For i:=1 to wDoc.StoryRanges.Count do begin |
2. wäre für mich richtig, die items in Word fangen immer bei 1 an.
Zeig mal bitte deinen kompletten Code, also auch, wie Du dich mit Word verbindest.
ansonsten haben die Elemente meist eine item-Eigenschaft (runde Klammer!).
Du müßtest sinnbildlich sowas stehen haben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Var Astory,Afield:variant; For i:=1 to wDoc.StoryRanges.Count do begin astory:=wDoc.StoryRanges.item(i); for j:=1 to astory.fields.count do begin Afield:=astory.fields.item(j); afield.update; end; end; |
ist aber völlig ungetestet.
Wobei, läßt sich das aktualisieren nicht auch in den Optionen generell einstellen?
Gruß Frank