使用VSTO移植VBA_第1頁
使用VSTO移植VBA_第2頁
使用VSTO移植VBA_第3頁
使用VSTO移植VBA_第4頁
使用VSTO移植VBA_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

使用VSTO移植VBAVSTO實際上是一系列的Visual Studio.NET工程模板,通過它來引導我們開發創建基于Office的解決方案。這里的項目測試針僅對文檔級項目。VSTO解決方案的優點很多,如實現代碼與數據文件分離、有利于保護代碼和方便功能更新、安全方面的增強第一次接觸VSTO,是這個VS2010版本。經過幾天的學習、摸索,發現移植VBA已經變得非常簡單。VSTO的書籍很少,而且有點過時。買了一本基于VB2005的VSTO開發指南,收獲不大,還不如看MSDN。但是MSDN上的示例代碼,對于習慣VBA的非程序員用戶來講,對象引用、屬性和方法的使用等,還是有些陌生。因此,進行了一些嘗試,力爭象使用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 上傳二、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、項目菜單-添加新項,在窗口選擇“功能區(可視化設計器)”。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)下載附件 保存到相冊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.RibbonImports 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.RibbonControlEventArgs) 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 & 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) & 3、使用數組; & Chr(10) & 4、把數組中的值寫入工作表; & Chr(10) & 5、選擇工作表。)With Globals.ThisWorkbook.Worksheets(工作表目錄).select()j = .Worksheets(匯總表).index 確定開始提取工作表名稱的位置,還是確定數組大小的參數k = .Worksheets.Count - j 確定單元格區域大小Dim Rng As Excel.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 Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button2.ClickWith Globals.ThisWorkbook.Worksheets(工作表目錄).select()If ProtectOffOn = 0 Then.Worksheets(工作表目錄).protect(password:=123456)ProtectOffOn = 1MsgBox(工作表已保護!再次點擊此按鈕會解除保護。)ElseIf ProtectOffOn = 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.ClickMsgBox(此示例更改最后一個工作表的名稱為更名工作表。)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(此示例刪除最后一個工作表。)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.Worksheets.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 Microsoft.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(ByVal 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(下面設置字體顏色).range(B1:B & i).Font.ColorIndex = 3End WithEnd SubEnd Class3個系統必備組件下載地址:1、Microsoft .NET Framew

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論