MFC 調用Automation(一)
Posted on 2009-10-03 23:55 S.l.e!ep.¢% 閱讀(803) 評論(0) 編輯 收藏 引用 所屬分類: Office Automation看到的是這篇文章
http://www.vckbase.com/document/viewdoc/?id=1186? 調用word
http://www.vckbase.com/document/viewdoc/?id=648??? office 插件開發
http://tech.163.com/05/0201/10/1BGGKDV90009159Q.html?ATL開發 office插件
Add the following code to the CAutoProjectApp::InitInstance() function, which loads and enables the COM services library:
Add the following line to the #include statements at the top of the AutoProject.cpp program file:
Add the include statement for excel8.h after the include statement for stdafx.h at the top of the AutoProjectDlg.cpp program file:
Add automation code to the CAutoProjectDlg::OnRun() so that it appears as shown below:
http://www.vckbase.com/document/viewdoc/?id=1186? 調用word
http://www.vckbase.com/document/viewdoc/?id=648??? office 插件開發
http://tech.163.com/05/0201/10/1BGGKDV90009159Q.html?ATL開發 office插件
Create an automation project
- With Microsoft Developer Studio, start a new "MFC AppWizard (exe)" project named "AutoProject."
- In step 1 of the MFC AppWizard, choose "Dialog Based" for the application type and then click Finish.
- Click ClassWizard on the View menu (or press CTRL+W).
- Select the Automation tab. Click Add Class and choose "From a type library." Navigate to select the object library for the application you wish to automate (for this example, if you are automating Excel 97, choose the Microsoft Excel 8.0 Object Library; the default location is C:\Program Files\Microsoft Office\Office\Excel8.olb).
Excel 2003. XL5EN32.OLB - NOTE: The list box in the Confirm Classes dialog box contains all of the IDispatch interfaces (which are virtually identical to classes) in the Microsoft Excel type library. In the lower half of the dialog box you will see that an Implementation file named Excel8.cpp contains generated class wrappers derived from ColeDispatchDriver(), and the appropriate declaration header file is named Excel8.h. (For Excel 2002 and Excel 2003, the files are named Excel.cpp and Excel.h.)
- Click OK to close the MFC ClassWizard dialog box.
BOOL CAutoProjectApp::InitInstance()
{
if(!AfxOleInit()) // Your addition starts here
{
AfxMessageBox("Could not initialize COM dll");
return FALSE;
} // End of your addition
AfxEnableControlContainer();
.
.
.
}
#include <afxdisp.h>
#include "stdafx.h"
#include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.
void CAutoProjectDlg::OnRun()
{
_Application app; // app is the Excel _Application object
// Start Excel and get Application object...
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't start Excel.");
}
else
{
//Make Excel Visible and display a message
app.SetVisible(TRUE);
AfxMessageBox ("Excel is Running!");
}
}
?????????