AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Word-OLE. geschütztes Dokument

Ein Thema von hoika · begonnen am 29. Mai 2017 · letzter Beitrag vom 13. Feb 2018
Antwort Antwort
Seite 1 von 2  1 2      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

Word-OLE. geschütztes Dokument

  Alt 29. Mai 2017, 17:13
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:
             
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;
Problem:
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.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Word-OLE. geschütztes Dokument

  Alt 29. Mai 2017, 17:40
Fehlermeldung
Diese Methode oder Eigenschaft ist nicht verfügbar, weil das Dokument geschützt ist

...

Das Dokument ist nicht schreibgeschützt.
Schreibschutz und geschütztes Dokument ist etwas anderes.
Hat das Dokument evtl. Formularfelder und wird bei OLE-Zugriff in Formularmodus geöffnet?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Word-OLE. geschütztes Dokument

  Alt 29. Mai 2017, 19:33
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? (https://www.delphi-treff.de/tipps-tr...rd-ausfuellen/)
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;
Heiko
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 10:04
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;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 12:03
Hallo,
ich würde das ja auch in Word selber aufheben, klappt aber nicht.
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 12:53
Halo,
also ProtectionType ist schon mal wdAllowOnlyFormFields.
Heiko
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 13:54
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.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 13:59
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 14:14
Ich hab mir in der Vergangenheit immer so beholfen, daß ich das Doc als .RTF gespeichert habe und dann wieder zurück geholt habe.
Was aber eine schlechte Idee ist, wenn man Wert darauf legt, dass die Formatierung des Dokuments bestehen bleibt. Von sonstigen Dokument-Eigenschaften mal ganz abgesehen.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Word-OLE. geschütztes Dokument

  Alt 30. Mai 2017, 17:53
Die Formatierung wurde immer beibehalten, und die sonstigen Eigenschaften waren ja der Grund für die Aktion.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz