Word Document.SaveAs结果为空文档

时间:2015-02-03 11:13:13

标签: delphi ms-word word-2010

我使用单位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;

1 个答案:

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