我使用单位Word2010
创建一个非常简单的单词文档。
我已经编写了这段代码,一切看起来都很好;但在操作中,保存的文档始终为空。你知道为什么会这样吗?
这是我的代码:
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;
答案 0 :(得分:1)
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
,从而请求这些参数的默认值。