Guten Tag!
ich hab folgendes Problem:
Ich habe x RTF/Word-Dokumente in einem Ordner und möchte jedes davon öffnen und mit SaveAs wieder speichern.
Mein Code sieht folgendemaßen aus:
Delphi-Quellcode:
procedure OpenSaveDocs(AList : TStringList);
var
i : integer;
Word : Variant;
varFalse : OleVariant;
begin
// Word starten
try
Screen.Cursor := crHourglass;
try
Word := CreateOleObject('
Word.Application');
Word.NormalTemplate.Saved := true;
finally
Screen.Cursor := crDefault;
end;
except
raise ECantStartWordException.Create('
Word konnte nicht gestartet werden.');
end;
try
for i := 0
to AList.Count - 1
do
try
varFalse := false;
//Dokument öffnen und speichern
Word.Documents.Open(AList[i],
varFalse, varFalse,
varFalse, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, varFalse);
Word.ActiveDocument.SaveAs(
AList[i] , 6,
EmptyParam, EmptyParam,
varFalse , EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam
);
Word.ActiveDocument.Close;
except
on e:
exception do
begin
ShowMessage(e.
Message);
end;
end;
finally
Word.Quit;
end;
Es wird alles ausgeführt, Dokumente werden geöffent bzw die tempdateien dazu angelegt udn wieder entfernt. Aber das Änderungsdatum ändert sich nicht. Also gehe ich davon aus, dass die SaveAs Funktion nicht tut was sie soll.
Nein ich mache das nicht um das Datum zu ändern. Ich habe in der Registry das Flag '0' gesetzt, wodurch Bilder zusätzlich als Kopie/Metainformation abgespeichert werden und RTF Dokumente sehr groß werden.
nun möchte ich nicht 10.000 Dokumente von Hand durchlaufen und öffnen und speichern und schreibe deswegen diese kleine Funktion.
Leider weis ich nicht was genau ich hier falsch mache.
Kann mir jemand helfen und einen Tipp geben?
Edit: Das Problem besteht auch nur beim überspeichern der Dateien, wenn ich die Dateien unter einem anderen Namen speichere klappt das.
seltsam, dabei gibts doch kein overwrite-flag oder sowas...