使用VSTO移植VBA_第1页
使用VSTO移植VBA_第2页
使用VSTO移植VBA_第3页
使用VSTO移植VBA_第4页
使用VSTO移植VBA_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、使用VSTO移植VBAVSTO实际上是一系列的Visual Studio.NET工程模板,通过它来引导我们开发创建基于Office的解决方案。这里的项目测试针仅对文档级项目。VSTO解决方案的优点很多,如实现代码与数据文件分离、有利于保护代码和方便功能更新、安全方面的增强第一次接触VSTO,是这个VS2010版本。经过几天的学习、摸索,发现移植VBA已经变得非常简单。VSTO的书籍很少,而且有点过时。买了一本基于VB2005的VSTO开发指南,收获不大,还不如看MSDN。但是MSDN上的示例代码,对于习惯VBA的非程序员用户来讲,对象引用、属性和方法的使用等,还是有些陌生。因此,进行了一些尝试

2、,力争象使用VBA一样的方式,来移植我的VBA。这个项目测试包括以下两个方面:一、用VS2010定制功能区示例。二、移植VBA代码到VSTO示例。运行环境:一、运行下面的附件示例文件,需要以下3个系统必备组件,请大家自行下载安装。见4楼地址。1、xtbb01.png (1.63 KB, 下载次数: 18)下载附件 保存到相册2010-12-21 10:47 上传2、xtbb02.png (2.17 KB, 下载次数: 21)下载附件 保存到相册2010-12-21 10:47 上传3、xtbb03.png (1.3 KB, 下载次数: 21)下载附件 保存到相册2010-12-21 10:47

3、 上传二、Office版本:2007或2010自定义功能区步骤:1、文件菜单-新建项目,在窗口中选择“EXCEL 2010 工作簿”。VSTO02.png (46.69 KB, 下载次数: 16)下载附件 保存到相册2010-12-21 10:59 上传2、项目命名,选择文件格式。VSTO03.png (27.54 KB, 下载次数: 10)下载附件 保存到相册2010-12-21 10:59 上传3、生成新建项目界面,修改工作表名称。VSTO10.png (120.87 KB, 下载次数: 11)下载附件 保存到相册2010-12-21 10:59 上传4、项目菜单-添加新项,在窗口选择“功

4、能区(可视化设计器)”。VSTO05.png (30.79 KB, 下载次数: 8)下载附件 保存到相册2010-12-21 10:59 上传5、打开“工具箱”,拖放“Tab”到设计功能区的顶部,创建新Tab。并在右下的属性窗口中修改相应的属性,如Lable属性值改为“VSTO操作工作表”。VstoTab.png (13.99 KB, 下载次数: 7)下载附件 保存到相册2010-12-21 10:59 上传6、拖放“Group”到新建的Tab区域,在右下的属性窗口中修改相应的属性,如Lable属性值改为“工作表操作”。VSTO07.png (64.84 KB, 下载次数: 10)下载附件 保

5、存到相册2010-12-21 10:59 上传7、拖放“Butten”到新建的Tab区域,在右下的属性窗口中修改相应的属性,如Lable属性值改为“遍历工作表”,添加图标、更改ControlSize属性为“RibbonControlSizeLarge”。VSTO09.png (47.75 KB, 下载次数: 9)下载附件 保存到相册2010-12-21 10:59 上传8、双击任意“Butten”,便可输入代码。已成功定制你的“自定义功能区”,开始体验代码吧。1楼附件里的移植VBA完整代码,不包括VSTO模板代码。Imports Microsoft.Office.Tools.RibbonImp

6、orts Excel = Microsoft.Office.Interop.ExcelPublic Class Ribbon1Public ProtectOffOn&Private Sub Ribbon1_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.LoadEnd SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.Rib

7、bonControlEventArgs) Handles Button1.ClickCall ListSheets()End SubSub 单元格写入值()Dim i&With Globals.ThisWorkbook.Worksheets("工作表一").select().RANGE("A1:B1") = "名称", "数量"For i = 2 To 10.range("A" & i).VALUE2 = "数据-" & i.range("B

8、" & i).VALUE2 = i * (100 - i * 10)Next iEnd WithEnd SubSub ListSheets() '遍历工作表并生成目录Dim i&, j&, k&MsgBox("请确认工作表未保护!" & Chr(10) & "这是一个综合示例,包括:" & Chr(10) & "1、遍历工作表;" & Chr(10) & "2、获取特定名称工作表的位置:" & Chr(10)

9、& "3、使用数组;" & Chr(10) & "4、把数组中的值写入工作表;" & Chr(10) & "5、选择工作表。")With Globals.ThisWorkbook.Worksheets("工作表目录").select()j = .Worksheets("汇总表").index '确定开始提取工作表名称的位置,还是确定数组大小的参数k = .Worksheets.Count - j '确定单元格区域大小Dim Rng As E

10、xcel.Range = .Worksheets("工作表目录").Range("B3").Resize(k, 1)Dim Arr(0 To k - 1, 0 To 0) As String '数组从0开始For i = j + 1 To .Worksheets.CountArr(i - j - 1, 0) = .Worksheets(i).NameNext iRng.Value2 = ArrEnd WithEnd SubSub Button2_Click(ByVal sender As System.Object, ByVal e As Mic

11、rosoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button2.ClickWith Globals.ThisWorkbook.Worksheets("工作表目录").select()If ProtectOffOn = 0 Then.Worksheets("工作表目录").protect(password:="123456")ProtectOffOn = 1MsgBox("工作表已保护!再次点击此按钮会解除保护。")ElseIf ProtectOf

12、fOn = 1 Then.Worksheets("工作表目录").unprotect(password:="123456")ProtectOffOn = 0MsgBox("已撤消工作表保护!再次点击此按钮会重新保护。")End IfEnd WithEnd SubPrivate Sub Button4_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button4.C

13、lickMsgBox("此示例更改最后一个工作表的名称为更名工作表。")With Globals.ThisWorkbook.Worksheets(.Worksheets.Count).name = "更名工作表"End WithEnd SubPrivate Sub Button3_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button3.ClickMsgBox("此示例

14、删除最后一个工作表。")With Globals.ThisWorkbook.Worksheets(.Worksheets.Count).delete()End WithEnd SubPrivate Sub Button5_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button5.ClickMsgBox("此示例在最后增加一个工作表。")With Globals.ThisWorkbook.W

15、orksheets.Add(After:=.Worksheets(.Worksheets.Count)End WithEnd SubPrivate Sub Button6_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button6.ClickCall 单元格写入值()End SubPrivate Sub Button7_Click(ByVal sender As System.Object, ByVal e As Mic

16、rosoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button7.ClickCall 单元格写入值()MsgBox("下面开始排序。")With Globals.ThisWorkbook.Worksheets("工作表一").range("A:B").sort(key1:=.range("B1"), Header:=Excel.XlYesNoGuess.xlYes)End WithEnd SubPrivate Sub Button8_Click(B

17、yVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button8.ClickDim i&Call 单元格写入值()MsgBox("下面设置边框")With Globals.ThisWorkbook.Worksheets("工作表一")i = .range("a" & .Rows.count).end(3).row.range("A1:B" & i).Borders.LineStyle = 1MsgBox("下面设置单元格颜色").range("A1:A" & i).Interior.ColorIndex = 6MsgBox("下面设置字体颜色").

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论