加入MSWORD.OLB类型库后
MFC自己生成如下代码:
#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace
它导致和原来的名字冲突.
1.所以把它改正成:
#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" no_namespace raw_interfaces_only \
rename("FindText","_FindText") \
rename("Rectangle","_Rectangle") \
rename("ExitWindows","_ExitWindows")
如果是自己通过appwizard添加派生类的话注释所有#import加载wordold库就可以拉
2.#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("FindText","_FindText"), rename("ExitWindows","_ExitWindows")
using namespace Word;
MSDN上的文章:http://support.microsoft.com/kb/307473/
下列步骤演示如何生成一个简单的自动化客户端。此过程有三个主要步骤:
- 创建自动化客户端。
- 添加代码以使 Microsoft Excel 自动运行。
- 运行自动化客户端。
无论您使用哪种自动化服务器,您都可以使用第一步“”来创建一个新的自动化客户端。而第二步“ 添加代码以使 Microsoft Excel 自动运行”是特定于自动化服务器的。
创建自动化客户端
- 启动 Microsoft Visual Studio .NET。在文件菜单上,单击新建,然后单击项目。从 Visual C++ 项目类型中选择 MFC Application(MFC 应用程序),然后将该项目命名为 AutoProject。
- 出现 MFC 应用程序向导后,单击应用程序类型,将应用程序类型设置为 Dialog Based(基于对话框),然后单击完成。
- 按照以下步骤修改 IDD_AUTOPROJECT_DIALOG 对话框:
- 删除 Label 控件 (IDC_STATIC) 和 Cancel 按钮 (IDCANCEL)。
- 将 OK 按钮的 ID 更改为“IDRUN”,将标题更改为“运行”。
- 按照以下步骤从类型库中为自动化服务器创建类包装:
- 在解决方案资源管理器中,右键单击 AutoProject,然后单击添加类。
- 单击 MFC Class from Typelib(类型库中的 MFC 类),然后单击打开。
- 单击 Add a class from:Registry(添加类自:注册表),并找到为您的自动化服务器注册的类型库。
对于本例,请选择“Microsoft Excel 10.0 类型库”(对于 Microsoft Excel XP)或选择“Microsoft Excel 9.0 类型库”(对于 Microsoft Excel 2000)。 - 从列表中选择您需要的一个或多个接口,然后单击大于号 (>),将它们添加到 MFC 为其创建包装的接口的列表中。添加完所有接口后请单击完成。
对于本例,您只需要 _Application 接口。
重要说明:如果您选择的类型库中有许多接口,则应只选择您想使用的接口,因为 MFC 将为所选的每个接口分别生成一个头文件。通过最大限度地缩小选择范围,您可以避免文件生成和编译期间不必要的系统开销。
- 要对 CAutoProjectApp::InitInstance 函数加载并启用 COM 服务库,请添加以下代码:
if(!AfxOleInit()) // Your addition starts here.{ AfxMessageBox("Cannot initialize COM dll"); return FALSE; // End of your addition.}AfxEnableControlContainer(); - 为每个从自动化服务器的类型库中的接口生成的头文件添加一个 include 指令。将这些指令添加到 AutoProjectDlg.cpp 顶部 Stdafx.h 的 include 语句后面。
对于本例,请为 CApplication.h 头文件(该文件是为 _Application 接口生成的)添加一个 include 指令:#include "stdafx.h" #include "CApplication.h"
添加代码以使 Microsoft Excel 自动运行
在 IDD_AUTOPROJECT_DIALOG 对话框中,右键单击运行,然后从下拉列表框中单击 Add event handler(添加事件处理程序)。在事件处理程序向导中,选择 BN_CLICKED 消息类型,然后单击 Add and Edit(添加并编辑)。在处理程序中添加以下代码以使 Excel 自动运行:
void CAutoProjectDlg::OnBnClickedRun(){ CApplication app; // app is the Excel _Application object // Start Excel and get Application object. if(!app.CreateDispatch("Excel.Application")) { AfxMessageBox("Cannot start Excel and get Application object."); return; } else { //Make the application visible and give the user control of //Microsoft Excel. app.put_Visible(TRUE); app.put_UserControl(TRUE); }}
运行自动化客户端
按 F5 键生成并运行自动化客户端。出现对话框后,请单击运行。自动化客户端将启动 Excel 并使该应用程序可见。注意,即使在自动化客户端终止后,Excel 也能保持运行,因为已将该应用程序的控制权给予用户。
其他说明
从类型库向项目中添加类后,您可能会注意到这些类出现在项目的“类视图”中。在“类视图”中,您可以双击一个类以查看该类的方法,然后可以双击方法以查看该函数在 MFC 包装的实现文件中的定义。如果您想验证返回类型或需要更改函数的实现,则可以查看成员函数的定义。
虽然前面的步骤阐述的是如何使 Microsoft Excel 自动运行,但您也可以使用同样的方法使其他应用程序自动运行。下面的列表包含其他 Microsoft Office 应用程序的类型库的文件名:
| 应用程序 | 类型库 |
| Microsoft Access 97 | Msacc8.olb |
| Microsoft Jet Database 3.5 | DAO350.dll |
| Microsoft Binder 97 | Msbdr8.olb |
| Microsoft Excel 97 | Excel8.olb |
| Microsoft Graph 97 | Graph8.olb |
| Microsoft Office 97 | Mso97.dll |
| Microsoft Outlook 97 | Msoutl97.olb |
| Microsoft PowerPoint 97 | Msppt8.olb |
| Microsoft Word 97 | Msword8.olb |
| Microsoft Access 2000 | Msacc9.olb |
| Microsoft Jet Database 3.51 | DAO360.dll |
| Microsoft Binder 2000 | Msbdr9.olb |
| Microsoft Excel 2000 | Excel9.olb |
| Microsoft Graph 2000 | Graph9.olb |
| Microsoft Office 2000 | Mso9.dll |
| Microsoft Outlook 2000 | Msoutl9.olb |
| Microsoft PowerPoint 2000 | Msppt9.olb |
| Microsoft Word 2000 | Msword9.olb |
| Microsoft Access 2002 | Msacc.olb |
| Microsoft Excel 2002 | Excel.exe |
| Microsoft Graph 2002 | Graph.exe |
| Microsoft Office 2002 | MSO.dll |
| Microsoft Outlook 2002 | MSOutl.olb |
| Microsoft PowerPoint 2002 | MSPpt.olb |
| Microsoft Word 2002 | MSWord.olb |
| Microsoft Office Access 2003 | Msacc.olb |
| Microsoft Office Excel 2003 | Excel.exe |
| Microsoft Office Graph 2003 | Graph.exe |
| Microsoft Office 2003 | MSO.dll |
| Microsoft Office Outlook 2003 | MSOutl.olb |
| Microsoft Office PowerPoint 2003 | MSPpt.olb |
| Microsoft Office Word 2003 | MSWord.olb |
注意:这些类型库的默认位置是:
| Office 版本 | 路径 |
| Office 97 | C:\Program Files\Microsoft Office\Office |
| Office 2000 | C:\Program Files\Microsoft Office\Office |
| Office XP | C:\Program Files\Microsoft Office\Office10 |
| Office 2003 | C:\Program Files\Microsoft Office\Office11 |
Dao350.dll 和 Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao 下列步骤演示如何生成一个简单的自动化客户端。此过程有三个主要步骤:
- 创建自动化客户端。
- 添加代码以使 Microsoft Excel 自动运行。
- 运行自动化客户端。
无论您使用哪种自动化服务器,您都可以使用第一步“”来创建一个新的自动化客户端。而第二步“ 添加代码以使 Microsoft Excel 自动运行”是特定于自动化服务器的。
创建自动化客户端
- 启动 Microsoft Visual Studio .NET。在文件菜单上,单击新建,然后单击项目。从 Visual C++ 项目类型中选择 MFC Application(MFC 应用程序),然后将该项目命名为 AutoProject。
- 出现 MFC 应用程序向导后,单击应用程序类型,将应用程序类型设置为 Dialog Based(基于对话框),然后单击完成。
- 按照以下步骤修改 IDD_AUTOPROJECT_DIALOG 对话框:
- 删除 Label 控件 (IDC_STATIC) 和 Cancel 按钮 (IDCANCEL)。
- 将 OK 按钮的 ID 更改为“IDRUN”,将标题更改为“运行”。
- 按照以下步骤从类型库中为自动化服务器创建类包装:
- 在解决方案资源管理器中,右键单击 AutoProject,然后单击添加类。
- 单击 MFC Class from Typelib(类型库中的 MFC 类),然后单击打开。
- 单击 Add a class from:Registry(添加类自:注册表),并找到为您的自动化服务器注册的类型库。
对于本例,请选择“Microsoft Excel 10.0 类型库”(对于 Microsoft Excel XP)或选择“Microsoft Excel 9.0 类型库”(对于 Microsoft Excel 2000)。 - 从列表中选择您需要的一个或多个接口,然后单击大于号 (>),将它们添加到 MFC 为其创建包装的接口的列表中。添加完所有接口后请单击完成。
对于本例,您只需要 _Application 接口。
重要说明:如果您选择的类型库中有许多接口,则应只选择您想使用的接口,因为 MFC 将为所选的每个接口分别生成一个头文件。通过最大限度地缩小选择范围,您可以避免文件生成和编译期间不必要的系统开销。
- 要对 CAutoProjectApp::InitInstance 函数加载并启用 COM 服务库,请添加以下代码:
if(!AfxOleInit()) // Your addition starts here. { AfxMessageBox("Cannot initialize COM dll"); return FALSE; // End of your addition. } AfxEnableControlContainer(); - 为每个从自动化服务器的类型库中的接口生成的头文件添加一个 include 指令。将这些指令添加到 AutoProjectDlg.cpp 顶部 Stdafx.h 的 include 语句后面。
对于本例,请为 CApplication.h 头文件(该文件是为 _Application 接口生成的)添加一个 include 指令:#include "stdafx.h" #include "CApplication.h"
添加代码以使 Microsoft Excel 自动运行
在 IDD_AUTOPROJECT_DIALOG 对话框中,右键单击运行,然后从下拉列表框中单击 Add event handler(添加事件处理程序)。在事件处理程序向导中,选择 BN_CLICKED 消息类型,然后单击 Add and Edit(添加并编辑)。在处理程序中添加以下代码以使 Excel 自动运行:
void CAutoProjectDlg::OnBnClickedRun()
{
CApplication app; // app is the Excel _Application object
// Start Excel and get Application object.
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Cannot start Excel and get Application object.");
return;
}
else
{
//Make the application visible and give the user control of
//Microsoft Excel.
app.put_Visible(TRUE);
app.put_UserControl(TRUE);
}
}
运行自动化客户端
按 F5 键生成并运行自动化客户端。出现对话框后,请单击运行。自动化客户端将启动 Excel 并使该应用程序可见。注意,即使在自动化客户端终止后,Excel 也能保持运行,因为已将该应用程序的控制权给予用户。
其他说明
从类型库向项目中添加类后,您可能会注意到这些类出现在项目的“类视图”中。在“类视图”中,您可以双击一个类以查看该类的方法,然后可以双击方法以查看该函数在 MFC 包装的实现文件中的定义。如果您想验证返回类型或需要更改函数的实现,则可以查看成员函数的定义。
虽然前面的步骤阐述的是如何使 Microsoft Excel 自动运行,但您也可以使用同样的方法使其他应用程序自动运行。下面的列表包含其他 Microsoft Office 应用程序的类型库的文件名:
| 应用程序 | 类型库 |
| Microsoft Access 97 | Msacc8.olb |
| Microsoft Jet Database 3.5 | DAO350.dll |
| Microsoft Binder 97 | Msbdr8.olb |
| Microsoft Excel 97 | Excel8.olb |
| Microsoft Graph 97 | Graph8.olb |
| Microsoft Office 97 | Mso97.dll |
| Microsoft Outlook 97 | Msoutl97.olb |
| Microsoft PowerPoint 97 | Msppt8.olb |
| Microsoft Word 97 | Msword8.olb |
| Microsoft Access 2000 | Msacc9.olb |
| Microsoft Jet Database 3.51 | DAO360.dll |
| Microsoft Binder 2000 | Msbdr9.olb |
| Microsoft Excel 2000 | Excel9.olb |
| Microsoft Graph 2000 | Graph9.olb |
| Microsoft Office 2000 | Mso9.dll |
| Microsoft Outlook 2000 | Msoutl9.olb |
| Microsoft PowerPoint 2000 | Msppt9.olb |
| Microsoft Word 2000 | Msword9.olb |
| Microsoft Access 2002 | Msacc.olb |
| Microsoft Excel 2002 | Excel.exe |
| Microsoft Graph 2002 | Graph.exe |
| Microsoft Office 2002 | MSO.dll |
| Microsoft Outlook 2002 | MSOutl.olb |
| Microsoft PowerPoint 2002 | MSPpt.olb |
| Microsoft Word 2002 | MSWord.olb |
| Microsoft Office Access 2003 | Msacc.olb |
| Microsoft Office Excel 2003 | Excel.exe |
| Microsoft Office Graph 2003 | Graph.exe |
| Microsoft Office 2003 | MSO.dll |
| Microsoft Office Outlook 2003 | MSOutl.olb |
| Microsoft Office PowerPoint 2003 | MSPpt.olb |
| Microsoft Office Word 2003 | MSWord.olb |
注意:这些类型库的默认位置是:
| Office 版本 | 路径 |
| Office 97 | C:\Program Files\Microsoft Office\Office |
| Office 2000 | C:\Program Files\Microsoft Office\Office |
| Office XP | C:\Program Files\Microsoft Office\Office10 |
| Office 2003 | C:\Program Files\Microsoft Office\Office11 |
Dao350.dll 和 Dao360.dll 的默认位置是 C:\Program Files\Common Files\Microsoft Shared\Dao
浙公网安备 33010602011771号