2601Mfc,自动化excel2

创建自动化项目

使用IDE,启动叫"AutoProject"的新"MFC应用向导(exe)"项目.

MFC应用向导第一步中,选择"基于对话框"的应用类型,然后点击完成.

项目信息``对话框显示,提示创建的分类包括:

1,应用助手:AutoProject.hAutoProject.cpp中的CAutoProjectApp

2,对话框:AutoProject.hAutoProjectDlg.cpp中的CAutoProjectDlg

点击确定以创建项目.

1,在项目客户区中,点击"资源视图"标签.

2,双击"自动项目资源"以展开资源树.

3,在资源树中双击"对话",然后双击选择"资源"IDD_AUTOPROJECT_DIALOG"对话框.

4,移除标签控件(IDC_STATIC)和取消按钮(IDCANCEL).

5,把确定按钮名改为"IDRUN",并将说明文字改为"运行".关闭AutoProject.rc``对话框设计表单.

6,点击视图菜单中的类向导(或按CTRL+W).

7,选择"消息映射"标签.

8,在对象ID列表框中选择IDRUN,在消息列表框中选择"BN_CLICKED".点击添加函数,接受函数名``"OnRun".点击确定关闭类向导.

注意:这一步会在叫AutoProjectDLG.h头文件中添加"OnRun();"成员函数的声明.这一步还会在叫AutoProjectDLG.cpp的文件中添加叫CAutoProjectDlg::OnRun()的空框架处理消息函数.

9,点击视图菜单中的类向导(或按CTRL+W).

10,选择自动化标签.点击添加类,然后选择"从类型库中".浏览选择你想自动化应用的对象库(这里,选择Excel8.0``对象库;

11,默认位置C:\ProgramFiles\办公\Office\Excel8.olb),然后点击打开.在确认类列表选择所有类并点击确定.

注意:确认类对话框中的列表框包含了优秀类型库中所有IDispatch接口(毕竟它们是类).

对话框的下半部分,你看叫Excel8.cpp实现文件包含从ColeDispatchDriver()继承的类封装器,相应的声明头文件Excel8.h.

12,点击确定关闭MFC类向导``对话框.

在加载并允许COM服务库的CAutoProjectApp::InitInstance()函数中添加以下代码:

cpp 复制代码
  BOOL CAutoProjectApp::InitInstance()
  {
     if(!AfxOleInit())
//你的新增内容在此
     {
        AfxMessageBox("Could not initialize COM dll");
        return FALSE;
     }
//你的扩建结束
     AfxEnableControlContainer();
  }

AutoProject.cpp助手文件顶部的#include语句中添加以下一行:

cpp 复制代码
  #include <afxdisp.h>

AutoProjectDlg.cpp助手文件顶部的包含语句后,添加excel8.h包含语句:

cpp 复制代码
  #include "stdafx.h"
  #include "excel8.h"

CAutoProjectDlg::OnRun()中添加自动化代码,使其渲染如下:

cpp 复制代码
  void CAutoProjectDlg::OnRun()
  {
      _Application app;
//`应用`是`Excel8`的`_Application`对象
//启动`Excel`并取`应用`对象...
     if(!app.CreateDispatch("Excel.Application"))
     {
        AfxMessageBox("Couldn't start Excel.");
     }
     else
     {
//让`Excel`可见并显示一条消息
      app.SetVisible(TRUE);
      AfxMessageBox ("Excel is Running!");
     }
  }

构建并运行项目.

结果:当你在对话框中点击"运行"按钮时,启动优秀.激活Auto_Excel``对话框关闭该消息框.当CAutoProjectDlg::OnRun()函数结束时,优秀会停止,因为应用已出域.

附加注释

一旦在项目中添加了类型库中的类(如上第9步所示),注意已在项目中添加了许多类.

类视中,你可双击一个类查看该类的成员函数,然后双击该成员函数查看Excel8.cpp``实现文件中的该函数定义.

如果你想验证返回类型或要更改函数的实现,需要进入成员函数的定义.

每次更改函数定义时,记得更改Excel8.h文件中的声明.

操作时,确保更改正确函数声明;有时,多个类的成员函数会有相同名,GetApplication()就是一例.

虽然上述步骤展示了如何自动化优秀,但你也可将同样的理念应来自动化其他应用助手.如下包含了办公97应用助手类型库的文件名:

应用 类型库
Access97 Msacc8.olb
JetDatabase3.5 DAO350.dll
Binder97 Msbdr8.olb
Excel97 Excel8.olb
Graph97 Graph8.olb
Office97 Mso97.dll
Outlook97 Msoutl97.olb
PowerPoint97 Msppt8.olb
Word97 Msword8.olb
Access2000 Msacc9.olb
JetDatabase3.51 DAO360.dll
Binder2000 Msbdr9.olb
Excel2000 Excel9.olb
Graph2000 Graph9.olb
Office2000 Mso9.dll
Outlook2000 Msoutl9.olb
PowerPoint2000 Msppt9.olb
Word2000 Msword9.olb

注意:这类库的默认位置C:\ProgramFiles\办公\Office,Dao350.dllDao360.dll除外.Dao350.dlldll/Dao360.dll``默认位置C:\ProgramFiles\CommonFiles\MicrosoftShared\Dao.

相关推荐
2601_960567967 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
HiDev_9 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
一次旅行10 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化
我送炭你添花11 小时前
工业现场疑难软故障实录:09 老旧产线,稳定裕量已经被吃光了
机器人·自动化·智能工厂
AOwhisky11 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
Urbano11 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化
MXsoft61818 小时前
成熟的自动化运维平台是什么样的?
运维·数据库·自动化
江边风声18 小时前
PCB自动化收放板机 在薄板制程中的特殊取放策略——0.05mm芯板怎么稳抓不掉
人工智能·科技·自动化·制造·pcb工艺
AI行业说19 小时前
美国布艺市场全品类生产解析——誉财YC-18-M8045四轴模板机的多品种柔性制造方案
大数据·人工智能·自动化·智能家居·自动化缝纫
蓝创工坊Blue Foundry19 小时前
多个同模板 PDF,怎样批量提取同一类字段到 Excel
运维·数据库·pdf·自动化·ocr·excel