VBA操作VBA代碼本身_第1頁
VBA操作VBA代碼本身_第2頁
VBA操作VBA代碼本身_第3頁
VBA操作VBA代碼本身_第4頁
VBA操作VBA代碼本身_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VBA操作 VBA代碼dadaV20190409基本概念:1、VBE對象:根對象,表示在VBA編輯器中存在的所有對象的最上層對象;2、VBAproject對象:VBE編輯器中的工程;3、VBComponents 對象:表示工程中所有的部件集合,包括Excel對象、窗體、模塊、類模塊;4、CodeModule 對象:表示部件中相關的代碼;(更具體詳解請示參見 Visual Basic 2010 開發(fā)參考)以下內容為程序具體內容,可直接 復制至VBE運行。一、返回模塊的行數(shù)、內容、過程名1.返回模塊的行數(shù)Sub返回模塊A中的總行數(shù)()MsgBoxThisWorkbook.VBProject.VBC

2、omponents(VBA操作 VBA 本身代碼”).CodeModule.CountOfLines 模塊名稱:VBA操作VBA本身代碼”,根據(jù)自身情況修改End SubSub返回過程test1中的總行數(shù)()MsgBoxThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼”).CodeModule. ProcCou ntLi nes(test1, vbext_pk_Proc) ProcCou ntLi nes返回在過程聲明之前的所有空行及注釋行的計數(shù),并且,如果該過程是一段代碼模塊的最后一個,那么此過程之后的所有空行也計入。End SubSub返

3、回過程testl中開始行數(shù)()MsgBox ThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼”).CodeModule.ProcBodyLine(test1, vbext_pk_Proc)模塊名稱:VBA 操作 VBA 本身代碼,根據(jù)自身情況修改End Subvbext_pk_Get 指定一個返回屬性值的過程vbext_pk_Let指定一個賦值給屬性的過程vbext_pk_Set指定一個給對象設置引用的過程vbext_pk_Proc指定所有過程除了Property過程2返回模塊的內容Sub返回過程test1中的所有代碼()Dim開始行數(shù),總行

4、數(shù)With ThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼”).CodeModule 模塊名稱:VBA操作VBA本身代碼,根據(jù)自身情況修改開始行數(shù) =.ProcBodyLine(test1, vbext_pk_Proc)總行數(shù) =.ProcCountLines(test1, vbext_pk_Proc)MsgBox .Lines(開始行數(shù),總行數(shù))End WithEnd Sub3返回過程名Sub返回第7行所在的過程名()(程序運行錯誤,原因不明?。㎝sgBox ThisWorkbook.VBProject.VBComponents(VBA操

5、作 VBA 本身代碼”).CodeModule.ProcOfLine(215,vbext_pk_Proc)模塊名稱:VBA 操作 VBA 本身代碼”,根據(jù)自身情況修改End Sub4判斷模塊和過程是否存在Sub判斷A模塊是否存在()On Error Resume NextIf ThisWorkbook.VBProject.VBComponents(VBA 操作 VBA 本身代碼)Is NothingThen 模塊名稱:VBA操作VBA本身代碼,根據(jù)自身情況修改MsgBox VBA操作VBA本身代碼不存在ElseMsgBox VBA 操作 VBA本身代碼存在”End IfEnd SubSub判斷

6、是否存在test1過程()On Error Resume NextDim開始行數(shù)開始行數(shù)=ThisWorkbook.VBProject.VBComponents(VBA 操作 VBA 本身代碼 ”).CodeModule.ProcBodyLine(test1, vbext_pk_Proc)模塊名稱:VBA 操作 VBA 本身代碼,根據(jù)自身情況修改If Err.Number = 35 The nMsgBox 不存在test1過程ElseMsgBox 存在 test1 過程End IfEnd Sub5.返回工程中所有部件名稱Sub顯示部件列表()Dim x As ByteWith ThisWork

7、book.VBProjectFor x = 1 To .VBComp onen ts.Co untCells(x + 1, 1) = .VBCompo nen ts(x).NameCells(x + 1,2) = .VBCompo nen ts(x).TypeNext xEnd WithEnd Sub二、添加模塊、過程、代碼1添加模塊(程序運行錯誤,原因不明!)Sub添加新模塊B()With ThisWorkbook.VBProject.VBCompo nen ts.Add(vbext_ct_StdModule).Name = BEnd WithEnd Subvbext_ct_ClassMod

8、ule將一個類模塊添加到集合vbext_ct_MSForm將窗體添加到集合vbext_ct_StdModule將標準模塊添加到集合2在模塊中添加代碼Sub添加新過程ABC()Dim sr, codesr = Sub ABC() & vbCrLf & Msgbox 測試添加代碼” & vbCrLf & End SubMsgBox srWith ThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼).CodeModule 模塊名稱:VBA操作VBA本身代碼”.AddFromStri ng srEnd WithEnd Sub3在模塊中插入代碼操作 VB

9、A 本身代碼Sub在B模塊中的第3行插入一行代碼()With ThisWorkbook.VBProject.VBComp onen ts(VBA”).CodeModule B 模塊名稱:VBA操作VBA本身代碼,根據(jù)自身情況修改.1 nsertLi nes 3, testi ng sheets(1).SelectEnd WithEnd Sub三、刪除模塊、過程、代碼1刪除模塊Sub刪除模塊()With ThisWorkbook.VBProject.VBCompo nents.Remove ThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼”)模

10、塊名稱:VBA操作VBA本身代碼”End WithEnd Sub2刪除過程Sub刪除模塊中的ABC過程()操作 VBA 本身代碼Dim開始行數(shù),總行數(shù)With ThisWorkbook.VBProject.VBComp onen ts(VBA ).CodeModule開始行數(shù) =P rocBodyLi ne(ABC, vbext_pk_Proc) 總行數(shù) =P rocCou ntL in es(ABC, vbext_pk_Proc) .DeleteLines開始行數(shù),總行數(shù)End WithEnd Sub四、替換、導入、導出模塊(代碼)Sub替換B模塊的ABC過程第一行代碼()Dim開始行數(shù)Wi

11、th ThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼”).CodeModule B 模塊名稱:VBA操作VBA本身代碼,根據(jù)自身情況更改模塊名稱開始行數(shù) =.ProcBodyLine(ABC, vbext_pk_Proc) ProcBodyLine:返回過程的第一行。.ReplaceLine開始行數(shù) + 1, MsgBox 修改后”End WithEnd SubSub替換一個模塊()先刪除模塊,然后導入新模塊ThisWorkbook.VBProject.VBCompo nen ts.RemoveThisWorkbook.VBProject.

12、VBComponents(VBA操作 VBA 本身代碼)ThisWorkbook.VBProject.VBCompo nen ts.Import D:/A.basEnd SubSub導入一個模塊()ThisWorkbook.VBProject.VBCompo nen ts.Import D:/A.basEnd Sub操作 VBA 本身代碼).ExportSub導出一個模塊()ThisWorkbook.VBProject.VBCompo nen ts(VBAD:/A.basEnd Sub五、模塊的查找、添加、刪除Find(查找內容,開始行數(shù),開始列始,結束行數(shù),結束列數(shù),是否匹配)Sub在B模塊

13、中查找()With ThisWorkbook.VBProject.VBComponents(VBA操作 VBA 本身代碼”).CodeModule B 模塊名稱:VBA操作VBA本身代碼,根據(jù)自身情況更改模塊名稱MsgBox .Find(愛,1, 1, 1, 1)End WithEnd SubSub給指定文件添加模塊()Dim wb As Workbook, ph As Stri ngApplicati on .DisplayAlerts = Falseph = ThisWorkbook.Path & Set wb = Workbooks.Ope n(ph & test.xls)ThisWor

14、kbook.VBProject.VBComponents(VBA操作 VBA 本身代碼).Export ph& A. basWin dows(wb.Name).Visible = Truewb.VBProject.VBCompo nen ts.Import ph & A.baswb.Close TrueSet wb = Nothi ngKill ph & A. basApplicati on .DisplayAlerts = TrueEnd SubSub刪除指定文件模塊()Dim wb As Workbook, ph As Stri ngApplicati on .DisplayAlerts

15、= Falseph = ThisWorkbook.Path & Set wb = Workbooks.Ope n(ph & test.xls)Win dows(wb.Name).Visible = Truewb.VBProject.VBCompo nen ts.Removewb.VBProject.VBComp onen ts(VBA操作VBA本身代碼)wb.Close TrueSet wb = Nothi ngApplicati on .DisplayAlerts = TrueEnd SubSub引用列表()Dim ref, iFor Each ref In ThisWorkbook.VBProject.Refere ncesi = i + 1Cells(i, 1) = ref.NameCells(i, 2) = ref.FullPathCells(i, 3) = ref.DescriptionNext refEnd SubSub 引用 IDE()D

溫馨提示

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

評論

0/150

提交評論