• Office、VBA开发方案选择指南


    最近很多朋友向我提出Office的开发方式方面的疑惑,主要是针对特定的系统和Office版本不知道选择哪一种编程语言、创建哪一种类型的项目。

    事实确实如此,如果搞不清楚语言的特性和项目类型的特点,很可能走很多弯路。也可能导致开发完的产品不能部署在客户电脑上。

    无论从哪一个角度讲,Office开发都是一个相当庞大、复杂的话题。

    下面是我整理出的一个按照开发项目分类的表格(*凡是写有VB.NET的地方,表示C#语言也可以做到)。

    话题1:32位和64位的问题

    Windows系统分为32位和64位。

    32位系统中只能安装32位Office。

    64位系统中可以安装32位Office,也可以安装64位Office。

    有的同学不知道现在用的Office是多少位,查看方法是,Excel中点击【文件】,进入Backstage视图,选择【账户】,点击“关于Excel”

     弹出一个对话框,写着32位。

    我经过开发和测试,发现VB6开发的dll文件不能用于64位Office及其VBA环境。

    但是,VB6开发的VB6外接程序,可以用在64位系统中的VB6,这可能是VB6本身不区分32和64位。

    这样得出如下结论:

    64位系统下的64位Office,这种环境下就别思考用VB6去开发Office的COM加载项,以及VBA的加载项了。

    那么剩下的其他情况,仍然可以使用VB6。

    话题2:动态链接库、自定义函数、外接程序的区别

    以上三个名词,确实有联系也有区别。

    • 动态链接库一般指的是用VB6创建的ActiveX DLL项目,编译生成后的是一个dll文件。可以在VBA工程或VB6工程中的引用中使用该dll文件,从而在代码中调用dll中的函数和方法。也就是说:动态链接库通常没有界面,只让你从其他程序代码中调用封装在dll中的函数。
    • 自定义函数,通常指的是Excel工作表中的扩展函数,这种自定义函数可以像SUM、Average一样被使用。自定义函数可以来源于VB制作的动态链接库,也可以来源于VB.NET制作的类库项目,还可以来源于Excel-DNA项目。
    • 外接程序指的是寄生在Office或VBA或VB6中的COM加载项,使用VB6创建ActiveX DLL项目就可以实现多个Office组件共享的COM加载项,也可以开发VBA、VB6编程环境中的COM加载项。同样使用VB.NET也可以做到。

    话题3:如何判断一个COM加载项是哪一种项目类型做出的?

    很多情况下,别人发给我一个安装包,我安装了以后可以正常使用,但是怎么知道这个产品是哪种开发方式呢?

    下面介绍一个粗略的方法。

    在COM加载项对话框中,选中那个你比较关心的COM加载项,看他的位置。如果显示的是mscoree.dll,那应该是VB.NET或C#开发的外接程序项目。 

    位置中格式如file:///...|vstolocal,这种的是VSTO外接程序项目。

    如果位置中,是本地磁盘中明确的一个dll文件的路径,可能是VB开发的COM加载项。

    话题4:COM加载项开发过程中的自定义界面如何选择

    如果开发对象是Office 2003,只能自定义菜单和工具栏,插件加载时创建自定义工具栏,卸载时删除工具栏。如果不删除工具栏,会产生垃圾。

    如果开发对象是VBA或VB6编程环境,也只能自定义菜单和工具栏。

    如果开发对象是Office 2007以上版本,可以使用自定义菜单和工具栏、使用Ribbon XML自定义功能区等,也可以创建任务窗格。

    总结:

    • VB6和VB.NET都可以作为Office和VBA的开发语言,都可以创建共享外接程序,可以在一个工程或项目内部实现多个COM加载项。而且,这种开发方式不限组件,只要有COM对话框的Office组件都可以用以上语言开发,例如开发Access的COM加载项。
    • 从语言本身来讲,VB.NET比VB6强大。
    • 上面表格中列出的15种开发方式,我都亲手实践过,结论可靠。
    • 其中VBE2014、VBE2019、Favorite、API函数库是颇具代表性的作品。

    本贴中写的不严谨的地方,大家可以发邮件至32669315@qq.com联系我。

    如果大家对上面那一部分感兴趣,可以翻看我的博客园中其他博文。

  • 相关阅读:
    简单的排序算法总结
    Android Stuido 方法参数 p0,p1
    年与酒
    Android-自定义View前传-View的三大流程-Layout
    Android自定义View前传-View的三大流程-Measure
    寻找积极
    括号配对问题
    Wan Android 项目总结
    涂鸦之作WanAndroid第三方APP
    CSS-定位(Position)
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/10946560.html
Copyright © 2020-2023  润新知