vc2005通过TypeLib引入C:\Program Files\Microsoft Office\OFFICE11\MSPPT.OLB问题

时间:2022-08-19 17:08:10
我现在用VC2005中的TypeLib引入C:\Program Files\Microsoft Office\OFFICE11\MSPPT.OLB中的几个操作PPT的类,
包含#include "CApplication.h",
定义_Application app; 对象老是报错

我参照的是这个的内容
http://www.joyvc.cn/ComponentDevelop/ComponentDevelop00016.html
但是VC2005导入那些类没有“msppt8.h”
我就添加每个对应类的头文件。愣是编译通不过。报的是产生的一个中间文件的错。
太奇怪了...

8 个解决方案

#1


报什么错误了

#2


出错代码是什么? 可以发给我gw_net@163.com
我帮你看一下

#3


vs2005貌似有问题,建议用vs2003或vs2008

#4


// for MS Office 2003 
#import "C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL" 
#import "c:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.olb" 
#import "c:\Program Files\Microsoft Office\Office11\MSWORD.olb" \ 

rename("ExitWindows","_ExitWindows") 
#import "c:\Program Files\Microsoft Office\Office11\EXCEL.exe" \ 
rename("DialogBox","_DialogBox") \ 
rename("RGB","_RGB") \ 
exclude("IFont","IPicture")

同事要导入CApplication 
这样就可以了。不报错。可惜的时候就是老是没有启动WORD。

#5


void CtestDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码


CApplication app; //定义一个WORD的应用对象
if(!app.CreateDispatch(_T("Word.Application"))) //启动WORD
{
AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));
return;
}

AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看"));
app.put_Visible(TRUE); //设置WORD可见。//当然,如果你想要悄悄地调用WORD的功能,则注释掉这条语句
AfxMessageBox(_T("现在你已经看到WORD的程序界面了吧"));
AfxMessageBox(_T("WORD准备要退出啦"));
VARIANT SaveChanges,OriginalFormat,RouteDocument; //定义调用QUIT时使用的参数
SaveChanges.vt=VT_BOOL; //设置退出WORD时候的保存参数
SaveChanges.boolVal=VARIANT_FALSE; //为不保存任何文档,模板及设置

::VariantInit(&OriginalFormat); //清空变量
RouteDocument.vt=VT_EMPTY; //清空变量的另一种方法
//调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那
app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
app.ReleaseDispatch(); //释放对象指针。切记,必须调用

AfxMessageBox(_T("Step1执行完成。接着请学习Setp2"));
OnOK();
}


这个代码也是别人的代码。

#6


就是没有启动WORD
app.CreateDispatch(_T("Word.Application")
这里就不行了

#7


      先MARK一下,以后再看!

#1


报什么错误了

#2


出错代码是什么? 可以发给我gw_net@163.com
我帮你看一下

#3


vs2005貌似有问题,建议用vs2003或vs2008

#4


// for MS Office 2003 
#import "C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL" 
#import "c:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.olb" 
#import "c:\Program Files\Microsoft Office\Office11\MSWORD.olb" \ 

rename("ExitWindows","_ExitWindows") 
#import "c:\Program Files\Microsoft Office\Office11\EXCEL.exe" \ 
rename("DialogBox","_DialogBox") \ 
rename("RGB","_RGB") \ 
exclude("IFont","IPicture")

同事要导入CApplication 
这样就可以了。不报错。可惜的时候就是老是没有启动WORD。

#5


void CtestDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码


CApplication app; //定义一个WORD的应用对象
if(!app.CreateDispatch(_T("Word.Application"))) //启动WORD
{
AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));
return;
}

AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看"));
app.put_Visible(TRUE); //设置WORD可见。//当然,如果你想要悄悄地调用WORD的功能,则注释掉这条语句
AfxMessageBox(_T("现在你已经看到WORD的程序界面了吧"));
AfxMessageBox(_T("WORD准备要退出啦"));
VARIANT SaveChanges,OriginalFormat,RouteDocument; //定义调用QUIT时使用的参数
SaveChanges.vt=VT_BOOL; //设置退出WORD时候的保存参数
SaveChanges.boolVal=VARIANT_FALSE; //为不保存任何文档,模板及设置

::VariantInit(&OriginalFormat); //清空变量
RouteDocument.vt=VT_EMPTY; //清空变量的另一种方法
//调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那
app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
app.ReleaseDispatch(); //释放对象指针。切记,必须调用

AfxMessageBox(_T("Step1执行完成。接着请学习Setp2"));
OnOK();
}


这个代码也是别人的代码。

#6


就是没有启动WORD
app.CreateDispatch(_T("Word.Application")
这里就不行了

#7


      先MARK一下,以后再看!

#8