WordDocument.SaveAs 结果为空文档
WordDocument.SaveAs results in an empty document
我正在使用单元 Word2010
创建一个非常简单的 word 文档。
我写了这段代码,一切看起来都很好;但实际上,保存的文档始终是空的。你知道为什么会这样吗?
这是我的代码:
procedure TConverter.Convert;
var
A: TWordApplication;
W: WordDocument;
begin
A := TWordApplication.Create(Nil);
try
// Create document
A.Visible := False;
W := A.Documents.Add('', False, wdNewBlankDocument, True);
// Write in document
A.Selection.StartOf(wdStory, wdMove);
A.Selection.InsertAfter('Hello World!');
A.Selection.Collapse(wdCollapseEnd);
A.Selection.EndOf(wdStory, wdMove);
// Save document
W.SaveAs(Target, wdFormatDocument, False, '', False, '', False, False, False, True, False, msoEncodingUTF8, True,
False, wdCRLF, False);
W.Close(wdDoNotSaveChanges, wdWordDocument, False);
A.Quit;
finally
A.Free;
end;
end;
您 SaveAs
的一个参数不正确。我还没有费心去检查是哪一个,但处理这个问题的最好方法是询问默认行为。通过传递 EmptyParam
:
来做到这一点
W.SaveAs(Target, wdFormatDocument, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam);
很丑吧?!
另一方面,我认为这比问题中的代码更具可读性,后者迫使您数数超过 5,即超出一只手的手指数。这总是很棘手!
好的,看来是参数号10,SaveFormsData
。您通过了 True
。将其更改为 False
也会导致您的文档内容出现在保存的文件中。但是,我坚持我上面所说的。您在这里只真正关心前两个参数,因此对所有其他参数使用 EmptyParam
,从而请求这些参数的默认值。
我正在使用单元 Word2010
创建一个非常简单的 word 文档。
我写了这段代码,一切看起来都很好;但实际上,保存的文档始终是空的。你知道为什么会这样吗?
这是我的代码:
procedure TConverter.Convert;
var
A: TWordApplication;
W: WordDocument;
begin
A := TWordApplication.Create(Nil);
try
// Create document
A.Visible := False;
W := A.Documents.Add('', False, wdNewBlankDocument, True);
// Write in document
A.Selection.StartOf(wdStory, wdMove);
A.Selection.InsertAfter('Hello World!');
A.Selection.Collapse(wdCollapseEnd);
A.Selection.EndOf(wdStory, wdMove);
// Save document
W.SaveAs(Target, wdFormatDocument, False, '', False, '', False, False, False, True, False, msoEncodingUTF8, True,
False, wdCRLF, False);
W.Close(wdDoNotSaveChanges, wdWordDocument, False);
A.Quit;
finally
A.Free;
end;
end;
您 SaveAs
的一个参数不正确。我还没有费心去检查是哪一个,但处理这个问题的最好方法是询问默认行为。通过传递 EmptyParam
:
W.SaveAs(Target, wdFormatDocument, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam);
很丑吧?!
另一方面,我认为这比问题中的代码更具可读性,后者迫使您数数超过 5,即超出一只手的手指数。这总是很棘手!
好的,看来是参数号10,SaveFormsData
。您通过了 True
。将其更改为 False
也会导致您的文档内容出现在保存的文件中。但是,我坚持我上面所说的。您在这里只真正关心前两个参数,因此对所有其他参数使用 EmptyParam
,从而请求这些参数的默认值。