ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 40396|回复: 52

[分享] 其实谁都可以由VBA快速转入VSTO的

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-23 13:04 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 HHAAMM 于 2012-11-23 13:16 编辑

目前感到很多人对VSTO敬而远之,真的有些不明白。其实你完全可以用VBA的方式在VSTO中写代码,你会感到这和VBA没什么不同。
(当然,VB.NET语言以及VSTO中有很多新技术,这些你完全可以先不搭理他们)
1、安装VS的帖子很多,这里略过
2、怎么建一个工作簿
启动vs2010》添加新项目》选VB语言》office》2010
QQ截图20121123125340.png
这时可以点击下面的浏览按钮选择项目的保存位置。可以修改名称为你想要的名称。解决方案名称是什么你可以先不去管他,就先默认原名称
QQ截图20121123125908.png
运行结束后就是下图这样了
QQ截图20121123130526.png


该贴已经同步到 HHAAMM的微博

评分

5

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-23 13:05 | 显示全部楼层
本帖最后由 HHAAMM 于 2012-11-23 15:54 编辑

3、代码该写到那里
QQ截图20121123131057.png

之后看到的是这样
QQ截图20121123131210.png
如果第一次见到上图,或许你会有些蒙。其实这个就相当于VBA中的Sheet1模块,只不过是以类的形式展示给我们的。
Sheet1类以及其中的两个事件是VS提前帮我们写好的,如果看着别扭的话,我们就弄个熟悉的看看

QQ截图20121123154240.png
上面这张图红色线框内的代码你总该熟悉了吧
运行下看看效果
QQ截图20121123154618.png

看到下图你应该知道怎么回事儿了吧,Sheet1的SelectionChange事件
QQ截图20121123155307.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-23 13:13 | 显示全部楼层
本帖最后由 HHAAMM 于 2012-11-23 16:09 编辑
  1. Private Sub Sheet1_SelectionChange(ByVal Target As Microsoft.Office.Interop.Excel.Range) Handles Me.SelectionChange
  2.         Target.Value = 1
  3.     End Sub
复制代码
代码可以写到Sheet1_SelectionChange里,当然也可以写到别的事件里,这些和VBA一模一样。

现在,如果要写个过程或函数该写到那里那? 下图这样就行
QQ截图20121123160214.png

QQ截图20121123160755.png

写好了运行下看看,相信你就明白了


TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-23 13:16 | 显示全部楼层
本帖最后由 HHAAMM 于 2012-11-23 21:55 编辑

4、该说说"类"了
如果你说"我们不想将过程、函数写在Sheet1类中该怎么办那?",这时,你就要了解下"类"了。
VB,NET语言中"类"是个基本的概念。如果用句白话说,这个的基本使用方法就和VBA的类模块一样样的。

如果你一点不会VBA中的类模块用法,可以试试看下面这个链接中的内容
http://club.excelhome.net/forum.php?mod=viewthread&tid=927379

VB.NET中怎么声明类和使用类可以看下面帖子链接中的一楼
http://club.excelhome.net/thread-942837-1-2.html

我写了个显示当前工作表表名的类
QQ截图20121123163114.png

当然,我在Sheet2中也照样可以使用他
QQ截图20121123163305.png

5、假如要在表Sheet1中添加个按钮该怎么办
鼠标点击下图中红圈圈里的"工作簿1"》鼠标再放在绿圈圈里的"工具箱"上,不用说你一下就明白了。
QQ截图20121123213447.png
双击这个Button
QQ截图20121123213847.png

ok 按钮出现了
QQ截图20121123214048.png

按钮的代码如下,和VBA一样一样的
QQ截图20121123215413.png
运行效果下图
QQ截图20121123215536.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-23 13:18 | 显示全部楼层
本帖最后由 HHAAMM 于 2012-11-23 22:36 编辑

6、怎么添加窗体
在此之前你要稍稍学习下,可能这个知识很新颖,不过可以先不必理会原因,仅仅知道怎么用就行了。
Globals类  所有的VSTO项目类型都定义了Globals类
这句看起来真的难以理解,不过有个和他在某些部分有近似意思的VBA语句你一定不陌生 Dim xApp As Application (这么解释其实很不恰当,但可以先照此理解)

鼠标选中下图红圈1处(注意你的项目名大概不会和图中的一样,但鼠标点选的位置都是那里),右键>点击图红圈2》图红圈3
QQ截图20121123221501.png


在窗体上添加个按钮
QQ截图20121123222130.png

将上次在Sheet1中按钮的代码改成下面这样(注意是Sheet1的按钮)

QQ截图20121123223028.png

窗体中按钮代码如下图
QQ截图20121123222301.png

下面转入15楼
QQ截图20121123222928.png

TA的精华主题

TA的得分主题

发表于 2012-11-23 15:36 | 显示全部楼层
郝版辛苦了
首先请告诉大家,由VBA转入VSTO有什么好处,什么情况下使用VSTO更方便,或可实现VBA所不能的功能等
性能上有什么提升,是不是比VBA更好写了,如果仅仅是换了一种运行环境,而性能上得不到提升,那么似乎还不够麻烦的

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-23 15:51 | 显示全部楼层
zhaogang1960 发表于 2012-11-23 15:36
郝版辛苦了
首先请告诉大家,由VBA转入VSTO有什么好处,什么情况下使用VSTO更方便,或可实现VBA所不能的功 ...

赵兄:这帖最后部分要提一下这个的,只是要先熟悉下VSTO环境很重要。

TA的精华主题

TA的得分主题

发表于 2012-11-23 16:07 | 显示全部楼层
本帖最后由 wpxxsyzx 于 2012-11-23 16:08 编辑
zhaogang1960 发表于 2012-11-23 15:36
郝版辛苦了
首先请告诉大家,由VBA转入VSTO有什么好处,什么情况下使用VSTO更方便,或可实现VBA所不能的功 ...


微软VSTO组的开发者说:VSTO的受众是“专业开发者”,可以理解为靠它赚钱,如果是处理日常工作中的问题vba更合适。
两者的区别多了,比如有功能更强大和智能的开发环境,可以使用比vba丰富的多的控件,VSTO公开了VBA没有的事件,由于是托管代码,可以避免宏病毒,增加了数据绑定的能力,做加载项会更稳定

TA的精华主题

TA的得分主题

发表于 2012-11-23 16:25 | 显示全部楼层
wpxxsyzx 发表于 2012-11-23 16:07
微软VSTO组的开发者说:VSTO的受众是“专业开发者”,可以理解为靠它赚钱,如果是处理日常工作中的问题 ...

我是这样认为的,VSTO是给有专业知识的开发人员准备的,广大业余爱好者解决一般重复性工作,VBA还是能对付的

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-23 16:43 | 显示全部楼层
我想说,就是"解决一般重复性工作",VSTO优势也很多。

再说,"解决一般重复性工作"这个怎么来界定,VBA中如果代码上百行了复杂了,VSTO的优势就出来了,

还有,EH就是在讨论交流"“专业开发者"的技术。专业开发者这个也很难界定,是不是只有程序员才是专业开发者。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 10:34 , Processed in 0.045819 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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