![]() |
Word-OLE. geschütztes Dokument
Hallo,
folgender Code-Ausschnitt zum Ersetzen von Text in MS-Word klappt seit Jahren. Also bitte nicht fragen, was SL_Search und iString sind.
Delphi-Quellcode:
WordApp.ActiveWindow.ActivePane.Selection.WholeStory; WordApp.ActiveWindow.ActivePane.View.SeekView:= wdSeekMainDocument; WordApp.ActiveWindow.ActivePane.View.Type := wdPrintView; DBInText_OLE_ReplaceString(WordApp, SearchString, ReplaceString, 'Hauptdokument');
Delphi-Quellcode:
Problem:DBInText sieht etwa so aus WordApp.Selection.Find.ClearFormatting; WordApp.Selection.Find.Replacement.ClearFormatting; WordApp.Selection.Find.Text:= SL_Search[iString]; WordApp.Selection.Find.Replacement.Text := SL_Replace[iString]; WordApp.Selection.Find.Forward := True; WordApp.Selection.Find.Wrap := wdFindContinue; WordApp.Selection.Find.Format := False; WordApp.Selection.Find.MatchCase := False; WordApp.Selection.Find.MatchWholeWord := False; WordApp.Selection.Find.MatchWildcards := False; WordApp.Selection.Find.MatchSoundsLike := False; WordApp.Selection.Find.MatchAllWordForms := False; //WordApp.Selection.Find.Execute(Replace:= wdReplaceAll); if not WordApp.Selection.Find.Execute(Replace:= wdReplaceAll) then begin //iDummy := 1; end; Ich habe ein teilweise geschütztes Dokument. Dann schlägt die folgende Zeile mit WordApp.ActiveWindow.ActivePane.Selection.WholeSto ry; fehl. Fehlermeldung Diese Methode oder Eigenschaft ist nicht verfügbar, weil das Dokument geschützt ist Was anderes als WholeStory soll ich denn dann nehmen? Wichtig noch als Info: Das Dokument ist nicht schreibgeschützt. Ich kann es mit Word selbst bearbeiten, z.B. auch eigene Text-Kenner anlegen. |
AW: Word-OLE. geschütztes Dokument
Zitat:
Hat das Dokument evtl. Formularfelder und wird bei OLE-Zugriff in Formularmodus geöffnet? |
AW: Word-OLE. geschütztes Dokument
Hallo,
der Unterschied ist schon klar ;) Jetzt weiß ich, was mich die ganz Zeit gestört hat. Ja, das Dokument hat Formularfelder, die ich nicht löschen kann. Sollte man dann versuchen, die Feldnamen rauszufinden? Wie würde denn das Ausfüllen über Formularfelder aussehen? Sieht dann wohl so aus? ( ![]()
Delphi-Quellcode:
try
Word.ActiveDocument.FormFields.Item('Name').Result := 'Hans Müller'; Word.ActiveDocument.FormFields.Item('Ort').Result := 'Berlin'; finally word := unassigned; screen.cursor := crDefault; end; |
AW: Word-OLE. geschütztes Dokument
Ist der Schutz ohne Kennwort oder weisst du das Kennwort? Wenn ja, kannst du einfach den Dokumentschutz aufheben und wieder setzen:
Delphi-Quellcode:
doc: Word2002_TLB._Document;
procedure ReProtect(protectType: TOleEnum; pwd: String = ''); var v1, v2, v3: OleVariant; begin try if protectType <> wdNoProtection then begin v1 := protectType; v2 := true; v3 := pwd; doc.Protect(v1, v2, v3); end; except // Fehler bei passwortgeschützten Dokumenten unterdrücken end; end; function UnProtect(pwd: String = ''): TOleEnum; var v1: OleVariant; begin result := doc.ProtectionType; try if doc.ProtectionType <> wdNoProtection then begin v1 := pwd; doc.Unprotect(v1); end; except // Fehler bei passwortgeschützten Dokumenten unterdrücken end; end; |
AW: Word-OLE. geschütztes Dokument
Hallo,
ich würde das ja auch in Word selber aufheben, klappt aber nicht. |
AW: Word-OLE. geschütztes Dokument
Halo,
also ProtectionType ist schon mal wdAllowOnlyFormFields. |
AW: Word-OLE. geschütztes Dokument
Manuell kannst du es in Word aber ändern?
Dann zeichne das doch einfach mal mit dem Makro-Editor auf und programmiere das dann in Delphi nach. |
AW: Word-OLE. geschütztes Dokument
Ich hab mir in der Vergangenheit immer so beholfen, daß ich das Doc als .RTF gespeichert habe und dann wieder zurück geholt habe.
Gruß K-H |
AW: Word-OLE. geschütztes Dokument
Zitat:
|
AW: Word-OLE. geschütztes Dokument
Die Formatierung wurde immer beibehalten, und die sonstigen Eigenschaften waren ja der Grund für die Aktion.
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz