Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   COM-Automation Word, Fusszeile löschen (https://www.delphipraxis.net/180413-com-automation-word-fusszeile-loeschen.html)

hoika 19. Mai 2014 08:04

COM-Automation Word, Fusszeile löschen
 
Hallo,

ich versuche gerade krampfhaft, in einem Word-Dokument die Fusszeile zu löschen,
oder zumindestes den Inhalt.
Da ich den Inhalt nicht kenne, kann ich keines der Search&Replace-Bsp.-e benutzen.

Meine bisherigen Bemühungen seht ihr unten.
Klappt leider nicht ;(

Hat jemand einen Tip?

Danke


Heiko

PS: Späte Bindung benutze ich, um versionsunabhängiger zu sein.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  WordApp: OLEVariant;
  D     : OLEVariant;
  S     : OLEVariant;
  F     : OLEVariant;
  Range : OLEVariant;
begin
  DeleteFile('c:\temp10\3.doc');

  try
    WordApp := CreateOLEObject('Word.Application');
  except
    on E: Exception do
    begin
      Exit;
    end;
  end;

  //WordApp.Visible:= False;

  WordApp.Documents.Open('c:\temp10\2.doc');

  D := WordApp.ActiveDocument;

  WordApp.ActiveWindow.ActivePane.View.SeekView := wdSeekPrimaryFooter;
  WordApp.Selection.Select;
  WordApp.Selection.Text := '';
Clear ??
Range ??

  WordApp.Selection.Font.Size := 20;
  WordApp.Selection.TypeText('Seite ');

(*
  S := D.Sections[1];
  F := S.Footers(1);
  Range := F.Range;

  Range.Select;
  Range.Clear;
*)

  WordApp.ActiveDocument.SaveAs('c:\temp10\3.doc');

  WordApp.Quit;
  WordApp := Unassigned;
end;

Sherlock 19. Mai 2014 08:19

AW: COM-Automation Word, Fusszeile löschen
 
Es ist lange her, daß ich Word-Automation betrieb. Was ich mir behalten habe ist
1) Du musst immer den zu löschenden Text markieren (Range oder so)
2) Späte Bindung verlangsamt mindestens um den Faktor 10

Sherlock

hoika 19. Mai 2014 08:23

AW: COM-Automation Word, Fusszeile löschen
 
Hallo,

meine bisherigen Bemühungen sind zumindestens vom Erfolg gekrönt!!!
Einziger Nachteil ist bei

WordApp.Selection.SetRange(0,10000);

die 10000.
Mehr habe ich auf jeden Fall nicht drin.

Eine Lösung ohne die 10000 wäre schön.
Ich finde aber kein SelectAll.

Danke

Heiko


Delphi-Quellcode:
procedure TForm67.Button3Click(Sender: TObject);
var
  WordApp: OLEVariant;
begin
  DeleteFile('c:\temp10\3.doc');

  try
    WordApp := CreateOLEObject('Word.Application');
  except
    on E: Exception do
    begin
      Exit;
    end;
  end;

  WordApp.Visible:= False;

  WordApp.Documents.Open('c:\temp10\2.doc');

  WordApp.ActiveWindow.ActivePane.View.SeekView := wdSeekPrimaryFooter;

  WordApp.Selection.SetRange(0,10000);
  WordApp.Selection.Text := '';

  WordApp.ActiveDocument.SaveAs('c:\temp10\3.doc');

  WordApp.Quit;
  WordApp := Unassigned;
end;

p80286 19. Mai 2014 10:08

AW: COM-Automation Word, Fusszeile löschen
 
So Suche ich und lösche bis zum Ende im Dokument, sollte aber auch in der Fußzeile gehen.

Code:
Selection.EndKey unit:=wdStory, Extend:=wdMove
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "---- delete hereof:"
        .Replacement.Text = ""
        .Forward = False
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .CorrectHangulEndings = True
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = False
    End With
    Selection.Find.Execute
    Selection.EndKey unit:=wdStory, Extend:=wdExtend
    Selection.Delete
Gruß

K-H

hoika 19. Mai 2014 18:33

AW: COM-Automation Word, Fusszeile löschen
 
Hallo Sherlock,

mit dem Speedverlust muss ich leben,
weil das TWordApplication Methoden bereitstellt,
die je nach Word-Version andere Parameter haben.


Heiko

EarlyBird 19. Mai 2014 21:10

AW: COM-Automation Word, Fusszeile löschen
 
Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  WordApp: OLEVariant;
  D : OLEVariant;
  S : OLEVariant;
  F : OLEVariant;
  Range : OLEVariant;
begin
  DeleteFile('c:\temp10\3.doc');

  try
    WordApp := CreateOLEObject('Word.Application');
  except
    on E: Exception do
    begin
      Exit;
    end;
  end;

  //WordApp.Visible:= False;

  D :=WordApp.Documents.Open('c:\temp10\2.doc');
  D.sections[1].footers[1].range.Delete;
  WordApp.ActiveDocument.SaveAs('c:\temp10\3.doc');

  WordApp.Quit;
  WordApp := Unassigned;
end;

Sir Rufo 19. Mai 2014 21:22

AW: COM-Automation Word, Fusszeile löschen
 
@EarlyBird

So eine windige Konstruktion mit dem
Delphi-Quellcode:
try .. except
habe ich auch noch nicht gesehen :shock:

Nimm wenigstens statt
Delphi-Quellcode:
Exit
(bricht die aktuelle Methode/Prozedur ab)
Delphi-Quellcode:
Abort
(stille Exception) oder lass es ganz weg und fang das mit
Delphi-Quellcode:
Application.OnException
ab, dann kannst du das wenigstens noch protokollieren.

EarlyBird 19. Mai 2014 21:30

AW: COM-Automation Word, Fusszeile löschen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1259440)
@EarlyBird

So eine windige Konstruktion mit dem
Delphi-Quellcode:
try .. except
habe ich auch noch nicht gesehen :shock:

Der Code kam vom TE.
Ich habe nur die Stelle zum löschen des Footers angepasst
Beim restlichen Code will ich dem TE ja nicht ins Handwerk pfuschen:lol:

Sir Rufo 19. Mai 2014 21:58

AW: COM-Automation Word, Fusszeile löschen
 
Zitat:

Zitat von EarlyBird (Beitrag 1259441)
Zitat:

Zitat von Sir Rufo (Beitrag 1259440)
@EarlyBird

So eine windige Konstruktion mit dem
Delphi-Quellcode:
try .. except
habe ich auch noch nicht gesehen :shock:

Der Code kam vom TE.
Ich habe nur die Stelle zum löschen des Footers angepasst
Beim restlichen Code will ich dem TE ja nicht ins Handwerk pfuschen:lol:

:oops: stimmt ... (gibts hier keinen Tomaten-Auf-Den-Augen Smiley?)

hoika 20. Mai 2014 05:08

AW: COM-Automation Word, Fusszeile löschen
 
Hallo,

windig ??? :)

Ist doch nur zum Testen.

Ich schau mir den Code nachher auf Arbeit an.
Danke.

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr.
Seite 1 von 2  1 2      

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