使用VSTO移植VBA答案参考.docx

上传人:b****1 文档编号:647703 上传时间:2022-10-11 格式:DOCX 页数:11 大小:331.71KB
下载 相关 举报
使用VSTO移植VBA答案参考.docx_第1页
第1页 / 共11页
使用VSTO移植VBA答案参考.docx_第2页
第2页 / 共11页
使用VSTO移植VBA答案参考.docx_第3页
第3页 / 共11页
使用VSTO移植VBA答案参考.docx_第4页
第4页 / 共11页
使用VSTO移植VBA答案参考.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

使用VSTO移植VBA答案参考.docx

《使用VSTO移植VBA答案参考.docx》由会员分享,可在线阅读,更多相关《使用VSTO移植VBA答案参考.docx(11页珍藏版)》请在冰豆网上搜索。

使用VSTO移植VBA答案参考.docx

使用VSTO移植VBA答案参考

使用VSTO移植VBA

VSTO实际上是一系列的VisualStudio.NET工程模板,通过它来引导我们开发创建基于Office的解决方案。

这里的项目测试针仅对文档级项目。

VSTO解决方案的优点很多,如实现代码与数据文件分离、有利于保护代码和方便功能更新、安全方面的增强……

第一次接触VSTO,是这个VS2010版本。

经过几天的学习、摸索,发现移植VBA已经变得非常简单。

VSTO的书籍很少,而且有点过时。

买了一本基于VB2005的《VSTO开发指南》,收获不大,还不如看MSDN。

但是MSDN上的示例代码,对于习惯VBA的非程序员用户来讲,对象引用、属性和方法的使用等,还是有些陌生。

因此,进行了一些尝试,力争象使用VBA一样的方式,来移植我的VBA。

这个项目测试包括以下两个方面:

一、用VS2010定制功能区示例。

二、移植VBA代码到VSTO示例。

运行环境:

一、运行下面的附件示例文件,需要以下3个系统必备组件,请大家自行下载安装。

见4楼地址。

1、

xtbb01.png(1.63KB,下载次数:

18)

下载附件保存到相册

2010-12-2110:

47上传

2、

xtbb02.png(2.17KB,下载次数:

21)

下载附件保存到相册

2010-12-2110:

47上传

3、

xtbb03.png(1.3KB,下载次数:

21)

下载附件保存到相册

2010-12-2110:

47上传

二、Office版本:

2007或2010

自定义功能区步骤:

1、文件菜单-新建项目,在窗口中选择“EXCEL2010工作簿”。

VSTO02.png(46.69KB,下载次数:

16)

下载附件保存到相册

2010-12-2110:

59上传

2、项目命名,选择文件格式。

VSTO03.png(27.54KB,下载次数:

10)

下载附件保存到相册

2010-12-2110:

59上传

3、生成新建项目界面,修改工作表名称。

VSTO10.png(120.87KB,下载次数:

11)

下载附件保存到相册

2010-12-2110:

59上传

4、项目菜单-添加新项,在窗口选择“功能区(可视化设计器)”。

VSTO05.png(30.79KB,下载次数:

8)

下载附件保存到相册

2010-12-2110:

59上传

5、打开“工具箱”,拖放“Tab”到设计功能区的顶部,创建新Tab。

并在右下的属性窗口中修改相应的属性,如Lable属性值改为“VSTO操作工作表”。

VstoTab.png(13.99KB,下载次数:

7)

下载附件保存到相册

2010-12-2110:

59上传

6、拖放“Group”到新建的Tab区域,在右下的属性窗口中修改相应的属性,如Lable属性值改为“工作表操作”。

VSTO07.png(64.84KB,下载次数:

10)

下载附件保存到相册

2010-12-2110:

59上传

7、拖放“Butten”到新建的Tab区域,在右下的属性窗口中修改相应的属性,如Lable属性值改为“遍历工作表”,添加图标、更改ControlSize属性为“RibbonControlSizeLarge”。

VSTO09.png(47.75KB,下载次数:

9)

下载附件保存到相册

2010-12-2110:

59上传

8、双击任意“Butten”,便可输入代码。

 

已成功定制你的“自定义功能区”,开始体验代码吧。

1楼附件里的移植VBA完整代码,不包括VSTO模板代码。

ImportsMicrosoft.Office.Tools.Ribbon

ImportsExcel=Microsoft.Office.Interop.Excel

PublicClassRibbon1

PublicProtectOffOn&

PrivateSubRibbon1_Load(ByValsenderAsSystem.Object,ByValeAsRibbonUIEventArgs)HandlesMyBase.Load

EndSub

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton1.Click

CallListSheets()

EndSub

Sub单元格写入值()

Dimi&

WithGlobals.ThisWorkbook.Worksheets("工作表一")

.select()

.RANGE("A1:

B1")={"名称","数量"}

Fori=2To10

.range("A"&i).VALUE2="数据-"&i

.range("B"&i).VALUE2=i*(100-i*10)

Nexti

EndWith

EndSub

 

SubListSheets()'遍历工作表并生成目录

Dimi&,j&,k&

MsgBox("请确认工作表未保护!

"&Chr(10)&"这是一个综合示例,包括:

"&Chr(10)&"1、遍历工作表;"&Chr(10)&"2、获取特定名称工作表的位置:

"&Chr(10)&"3、使用数组;"&Chr(10)&"4、把数组中的值写入工作表;"&Chr(10)&"5、选择工作表。

")

WithGlobals.ThisWorkbook

.Worksheets("工作表目录").select()

j=.Worksheets("汇总表").index'确定开始提取工作表名称的位置,还是确定数组大小的参数

k=.Worksheets.Count-j'确定单元格区域大小

DimRngAsExcel.Range=.Worksheets("工作表目录").Range("B3").Resize(k,1)

DimArr(0Tok-1,0To0)AsString'数组从0开始

Fori=j+1To.Worksheets.Count

Arr(i-j-1,0)=.Worksheets(i).Name

Nexti

Rng.Value2=Arr

EndWith

EndSub

SubButton2_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton2.Click

WithGlobals.ThisWorkbook

.Worksheets("工作表目录").select()

IfProtectOffOn=0Then

.Worksheets("工作表目录").protect(password:

="123456")

ProtectOffOn=1

MsgBox("工作表已保护!

再次点击此按钮会解除保护。

")

ElseIfProtectOffOn=1Then

.Worksheets("工作表目录").unprotect(password:

="123456")

ProtectOffOn=0

MsgBox("已撤消工作表保护!

再次点击此按钮会重新保护。

")

EndIf

EndWith

EndSub

PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton4.Click

MsgBox("此示例更改最后一个工作表的名称为《更名工作表》。

")

WithGlobals.ThisWorkbook

.Worksheets(.Worksheets.Count).name="更名工作表"

EndWith

EndSub

PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton3.Click

MsgBox("此示例删除最后一个工作表。

")

WithGlobals.ThisWorkbook

.Worksheets(.Worksheets.Count).delete()

EndWith

EndSub

PrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton5.Click

MsgBox("此示例在最后增加一个工作表。

")

WithGlobals.ThisWorkbook

.Worksheets.Add(After:

=.Worksheets(.Worksheets.Count))

EndWith

EndSub

PrivateSubButton6_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton6.Click

Call单元格写入值()

EndSub

PrivateSubButton7_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton7.Click

Call单元格写入值()

MsgBox("下面开始排序。

")

WithGlobals.ThisWorkbook.Worksheets("工作表一")

.range("A:

B").sort(key1:

=.range("B1"),Header:

=Excel.XlYesNoGuess.xlYes)

EndWith

EndSub

PrivateSubButton8_Click(ByValsenderAsSystem.Object,ByValeAsMicrosoft.Office.Tools.Ribbon.RibbonControlEventArgs)HandlesButton8.Click

Dimi&

Call单元格写入值()

MsgBox("下面设置边框")

WithGlobals.ThisWorkbook.Worksheets("工作表一")

i=.range("a"&.Rows.count).end(3).row

.range(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1