C++Builder 程序员博客
4 Dec
新手,一堆的问题要请教
问题1,
用OleContainer的CreateObjectFromFile("xx.doc",false);
再用OleContainer.DoVerb(ovInPlaceActivate);可以将WORD界面显示在我的窗口中
如果用OleContainer.CreateObject("Word.Application",false);
再用OleContainer.DoVerb(ovInPlaceActivate);
出错,提示不支持此接口,用OleContainer.OleObject.OlePropertySet("Visible",true);能显示,但界面是独立的,不是在我的窗口里
请问如果用CreateObject而不是用CreateObjectFromFile来创建
问题2,
用OleContainer的CreateObjectFromFile创建Word对象,使用下面的语句
Variant vWord=OleContainer.OleObject;
Variant vDoc=vWord.Exec(PropertyGet("Documents"));
运行到此提示Method "Documents" not supported by automation object;
但直接用Variant vApp=Variant::CreateObject("Word.Application");则可以调用上面这句。
问题3,
用OleContainer创建的Word,在WORD中不能运行事先录制的宏,要怎么运行啊?是在WORD的菜单->工具->宏来运行,不是程序中。
问题4,如何在程序中用OLE调用WORD文档中事先录制的宏。
妖哥怎么没有来。。等待中~~
期待高人啊,望眼欲穿
问题一解决,
const GUID CLSID_WORDDOCUMENT = {0×00020906,0×0000,0×0000,{0xC0,0×00,0×00,0×00,0×00,0×00,0×00,0×46}};
TCreateInfo ci;
ci.CreateType=ctNewObject;
ci.ClassID=CLSID_WORDDOCUMENT;
ci.ShowAsIcon = false;
ci.IconMetaPict = NULL;
wdCon->CreateObjectFromInfo(ci);
wdCon->DoVerb(ovShow);
可以创建一个新的WORD文档而不是通过文件来创建对象,
其它问题仍然呼唤高手,特别是问题2.
问题二也解决了,原来CreateObjectFromFile创建的对象不是Application,而是Document.要获得Application则可以通过
OleObject.Exec(PropertyGet("Application"));
问题三,四已经不重要了,直接用程序运行Word的各函数就可以了。