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,从而请求这些参数的默认值。