我想使用MsWord作为HTML文档的编辑器。 我用其他文件列表打开花药表格。 我希望用户选择其中一个文件 并将其作为链接添加到打开的文档中(在用户选择的位置)
我用olecontainer中创建的单词打开HTML文档。 与: 用OleContainerFrame做 开始 OleContainer1.CreateObjectFromFile(FileToEditName {myfile.html},False); OleContainer1.AutoActivate:= aaGetFocus; OleContainer1.DoVerb(ovOpen); OleContainer1.Run; 结束;
我如何添加此链接,如: AddHperyLink(SomeText,TheHyperLink).... 在用户选择的地方
答案 0 :(得分:1)
假设您的表单上有一个包含URI的TEdit(我使用了BBC的网站)。然后,以下代码将在您的OLEContainer的活动Word文档中向其添加超链接:
procedure TForm1.Button1Click(Sender: TObject);
begin
OleContainer1.OleObject.ActiveDocument.Hyperlinks.Add(
Anchor := OleContainer1.OleObject.Selection.Range,
Address := Edit1.Text, // contains e.g. http://www.bbc.co.uk
TextToDisplay := 'Link'
);
end;
这种工作方式是OleContainer1.OleObject是对Word.Application的变体引用(例如,参见Delphi附带的Word2000.Pas单元),一旦有了该引用,就可以使用较晚(或较早)调用Word的自动化方法。 )绑定。
OleContainer1.OleObject.ActiveDocument.Hyperlinks.Add参数的不寻常语法是Delphi支持的一种特殊语法,可以使命名参数用于后期调用。
更新:您在注释中说,您已经尝试了上面的代码,但收到错误“自动化对象不支持方法'选择'”。当我组合测试项目时,我没有在HTML和MS Word之间建立关联,因此我编写了激活Word并将HTML文件加载到其中所需的代码。我在FormCreate事件中这样做:
procedure TForm1.FormCreate(Sender: TObject);
var
V : OleVariant;
AFileName : String;
begin
OleContainer1.CreateObject('Word.Application', False);
OleContainer1.Run;
V := OleContainer1.OleObject;
Caption := V.Name;
V.Visible := True;
AFileName := ExtractFilePath(Application.ExeName) + 'Hello.Html';
V.Documents.Add(AFileName);
end;
请注意,这和Button1Click是我项目的整个代码,它会按您的要求插入链接。如果您得到不同的结果,我认为这一定是由于您的设置的某些细节使我们的读者看不到。
答案 1 :(得分:0)
是可行的。 我现在不可以使用
(Anchor := ....
);
但是现在 word删除execet路径并将其更改为'href =“ ../../../../ MzIAI / Images / 2019-06 / 12 / 45545_5679.Pdf”>' 并删除完整路径