我构建了一个小程序来使用 Delphi 从 .docx 中读取所有文本。它适用于普通文本和快速部件,但我在论坛和教程中找到的解决方案都不适用于我的文本字段或表单字段。我正在使用 Word 2013 和 Delphi XE7,我的文档有 2 个表单字段,一个名为“姓名”,另一个名为“作者”,还有一个文本字段。
这是我的代码:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
WordApplication1.Disconnect;
WordDocument1.Disconnect;
try
WordApplication1.Connect;
WordApplication1.Visible := true;
WordDocument1.ConnectTo(WordApplication1.Documents.Open(
'C:\homelaufwerk\Documents\Embarcadero\Studio\Projekte\Word test\testDoc.docx',
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam));
memo1.Clear;
memo1.Text := '';
for I := 1 to WordDocument1.Paragraphs.Count do
begin
memo1.Text := memo1.Text + WordDocument1.Paragraphs.Item(i).Range.Text + #13#10;
end;
memo1.Text := memo1.Text + WordApplication1.ActiveDocument.FormFields.Item('Author').Result;
memo1.Text := memo1.Text + WordApplication1.ActiveDocument.FormFields.Item('Name').Result;
for I := 1 to WordApplication1.ActiveDocument.Fields.Count do
begin
memo1.Text := memo1.Text + WordApplication1.ActiveDocument.Fields.Item(1).Result;
end;
WordDocument1.Close;
except
ShowMessage('Microsoft Word couldn''t start.');
end;
end;
我也为文本字段尝试了这个:
WordDocument1.Fields.Item(1).Select;
memo1.Text := memo1.Text + WordApplication1.Selection.Text;
并且在每个地方我都用 WordDocument1.[...] 替换了 WordApplication1.ActiveDocument.[...] ,反之亦然......没有任何效果。
当我调试时,文本字段的 .Count 函数总是返回 0,当我尝试获取表单字段的 .Result 时,我得到了找不到字段的错误(不知道错误的英文措辞) .
有谁知道,我做错了什么以及它将如何工作?
提前致谢,
莉亚