库管易

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

查看: 73243|回复: 20

使用C++开发Excel插件(1):前言与开发准备工作

[复制链接]
发表于 2014-4-30 14:56:30 | 显示全部楼层 |阅读模式
  提到Ms Office Excel相信谁都不陌生,但是你对微软的这个产品有多了解呢?大多数人平时只用它保存数据、绘制报表而已。但是你是否知道它的更深层次的功能呢,比如丰富的数学计算函数和强大的统计分析功能。我也是在大学上统计课时才接触到的它的统计功能,当时让我大为吃惊,Excel原来有这么强大的功能啊(也许是我从前对Excel太低估了吧)。虽然比起统计行业的老大哥SAS和SPSS,它的功能还有些欠缺,但是从操作方便程度,扩展等方面来看是老大哥们望尘莫及的。我在这里不是吹捧Excel而是强调一下它的功能。
  也许你会说根本不会用到那些复杂的功能,不过回想一下你曾经使用Excel的经历,试想如果在使用中使用那些统计功能会让你有另一番感觉。哦,说了半天还没提到写本文的主要目的呢,我可不是要介绍Excel的功能的,本文的目的是如何让Excel那么强大的功能为我们日常工作服务。纵观Excel的那些功能,虽然强大,但全部都是最基本的功能,并没有针对某一方面,这应该是和它面向所有office用户的有关吧。如果我们把那些基本功能综合起来,不就成了一个非常强大的系统吗。
  本文的目的就是介绍如何用C++程序扩展Excel的功能,或者如何在Excel的基础上创建合适某一方面的系统。比如利用Excel的金融分析和统计功能就可以开发出完善的金融系统。事实确实如此,许多金融公司都是在Excel上开发金融分析软件的。

  也许你会问,为什么不用VBA开发插件呢,方便又快捷?我并不反对用VBA开发,而是用c++开发的好处在于开发出来的程序执行效率高,而且可以有效地保护作者利益。VBA是一种解释语言,而c++则是编译语言,如果只是开发几个小功能的话,使用VBA可以很快地搞定,但是如果要开发的是要进入市场销售的产品的话,那就得三思了。不仅执行效率难以保证,而且很容易被别人窃取到代码,即使是加密的,也只是几秒钟的问题。我曾见过有人在Excel中写了许多宏,结果他每次启动Excel工作时都要等上半天。我也曾试着破解过一个比较有名的商业性Excel插件,几秒钟时间就把程序中的所有程序文件都打开了,几万行的VBA代码包括注释,一目了然。这如果是落在竞争对手那里那它不就全白费了。写此书前也是在论坛常看到一些人问如何保护他们所写的VBA代码。正好我也要开发一个Excel的商业插件,此间多方查阅资料,学到了不少知识,就把这些介绍给大家共同分享。
  读者对象:
  本文主要是面向所有想要Excel更好的为自己或其他人服务的开发人员,阅读此书的人只需懂一些C++基础,和VC++编译环境就可以了。

  开发准备:
  我们目前最常见的几个Excel的版本是Excel 97/2000/2002/2003/2007,本书提到的所有例子都是在Excel2003环境中的。它们虽然版本不同但是大多数接口并没什么区别。而且我们使用的是Excel的开发包,所以只要开发包不变。当然我们这里所有的版本都是指在32-bit的。Excel的开发包可以从微软网站上下载到。下载http://download.microsoft.com/download/platformsdk/sample27/1/NT4/EN-US/Frmwrk32.exe这个文件到本地,它里面包含了将要用到的xlcall.h和xlcall32.lib文件。Xlcall.h中包含了全部的Excel中的数据结构类型和C API函数的定义,关于如何使用它们,你可以参考Macrofun.hlp,它里面包含了全部的api函数的描述,在后面的章节中我们会重点的讲到一些常用的API函数,。下载地址http://download.microsoft.com/download/Excel97win/utility4/1/WIN98/EN-US/Macrofun.exe

  认识Excel插件(add-ins)
  其实插件在Excel中叫做加载宏,是一类程序,它们可以为Excel添加命令扩展其功能。你可以把工作薄保存为加载宏,只需在保存时选择.xla文件格式即可。加载宏业可以用C/C++编写,只要在加入一些和Excel衔接的接口就可以在Excel中调用了,通常其文件的扩展名为.xll。Excel中也包含一些常用加载宏,在安装时默认安装到Microsoft Office/Office文件夹中的Library文件夹或Addins文件夹。默认这些宏并没有全都加载,你可以通过点击菜单“工具/加载宏”,在弹出的“加载宏”对话框中选中你要加载的宏。主要包含以下几种功能的加载宏:
  
加载宏文件名说明
分析工具库ANALYS32.XLL添加金融、统计及工程分析工具和函数。
分析数据库-VBA函数ATPVBAEN.XLA允许开发人员用“分析工具库”的语法发布金融、统计及工程分析工具和函数。
条件求和向导SUMIF.XLA创建公式,对区域中满足指定条件的数据进行求和计算。
欧元转换工具EUROTOOL.XLA将数值的格式设置为欧元格式,并提供EUROCONVERT工作表函数用于转换货币。
Internet Assistant VBAHTML.XLA开发者可用Internet Assistant语法,将Excel数据发布到网站上。
查阅向导LOOKUP.XLA创建一个公式,通过区域中的已知值在区域中查找数据。
“规划求解”加载宏SOLVER.XLA对基于可变单元格和条件单元格的假设分析方案进行求解计算。
  Excel中有三种加载宏程序:Excel加载宏,自定义的com加载宏和自动化加载宏。在功能上它们都可以实现你想要的功能,只是在开发方法有些不同。
  
 Excel加载宏自定义的com加载宏自动加载宏
文件扩展名.xla或xll.exe或.dll.exe、.dll或.ocx
开发工具VC++或VBAVC++或VBVC++或VB
在Excel中的操作位置工具/加载宏工具/Com加载项工具/加载宏/自动化
开发难易程度容易困难困难
  VBA(Visual Basic Application)是Visual Basic的一个宏语言版本,主要用于扩展Ms Office的功能,你可以在菜单“工具/宏/Visual Basic编辑器”打开VBA编辑器,并可以直接编写操作office的代码,其语法和Visual Basic基本一样,而且也继承了VB的简单易用的特性。如图1
  

635344653163300781.jpg

635344653163300781.jpg

  图1
  Excel加载宏是我们这本书主要介绍的对象,在以后的内容中我们会重点介绍它。自定义Com加载宏和自动化加载宏相对复杂一些,暂不作详细介绍。

评分

参与人数 1金钱 +49 收起 理由
老爷 + 49

查看全部评分

回复

使用道具 举报

发表于 2014-12-8 22:08:42 | 显示全部楼层
竟然没有人顶,不科学啊
回复 支持 反对

使用道具 举报

发表于 2015-4-16 15:33:02 | 显示全部楼层
这个应该顶的
回复 支持 反对

使用道具 举报

发表于 2015-4-17 09:24:13 | 显示全部楼层
好东西!看起来挺复杂呀!谢谢楼主分享 {:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2015-6-12 22:50:25 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2015-8-12 17:21:20 | 显示全部楼层
好文
回复

使用道具 举报

发表于 2016-3-3 15:41:30 | 显示全部楼层
仓库里没电脑,只能用手工了
回复 支持 反对

使用道具 举报

发表于 2016-3-10 15:25:25 | 显示全部楼层
我看来是老了!!这个学不会了!!哎!!
回复 支持 反对

使用道具 举报

发表于 2016-3-10 19:47:59 | 显示全部楼层
呜呜,C语言没学,当时学的是文秘专业,不会编程,可怜啊
回复 支持 反对

使用道具 举报

发表于 2016-3-24 19:59:38 | 显示全部楼层

谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|仓库管理网

GMT+8, 2024-11-21 20:04

Powered by 库管易

KuGuanYi.Com

快速回复 返回顶部 返回列表