![]() |
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; |
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 |
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; |
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:
Gruß
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 K-H |
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 |
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; |
AW: COM-Automation Word, Fusszeile löschen
@EarlyBird
So eine windige Konstruktion mit dem
Delphi-Quellcode:
habe ich auch noch nicht gesehen :shock:
try .. except
Nimm wenigstens statt
Delphi-Quellcode:
(bricht die aktuelle Methode/Prozedur ab)
Exit
Delphi-Quellcode:
(stille Exception) oder lass es ganz weg und fang das mit
Abort
Delphi-Quellcode:
ab, dann kannst du das wenigstens noch protokollieren.
Application.OnException
|
AW: COM-Automation Word, Fusszeile löschen
Zitat:
Ich habe nur die Stelle zum löschen des Footers angepasst Beim restlichen Code will ich dem TE ja nicht ins Handwerk pfuschen:lol: |
AW: COM-Automation Word, Fusszeile löschen
Zitat:
|
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 04:43 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