昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2008-09-07, 10:39:45
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: 請會員來訪時務必完成登入,為維護論壇品質,將不定期刪除長時間未登入的會員!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  Excel程式區 (版主: hsieh)
| | | |-+  用程式寫程式 (VBProject / VBComponents)
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 向下 列印
作者 主題: 用程式寫程式 (VBProject / VBComponents)  (閱讀 1846 次)
leonchou
論壇維護群
*
離線 離線

文章: 1160


用程式寫程式 (VBProject / VBComponents)
« 於: 2005-04-22, 00:32:02 »

一個簡單的例子:在某XLS檔加入Workbook_Open事件

Sub ggg()
Dim wb As Excel.Workbook
Set wb = GetObject("C:\test.xls")
With wb.VBProject.VBComponents("ThisWorkbook").CodeModule
 .InsertLines 1, "Private Sub Workbook_Open()"
 .InsertLines 2, "Msgbox ""This is a Test."""
 .InsertLines 3, "End Sub"
End With
wb.Close SaveChanges:=True
Set wb = Nothing
End Sub

VBComponent 是一個VBA專案中的元件,
元件可以是表單(UserForm)、模組(Module)或物件類別。
此例即是在 ThisWorkbook 模組寫入程式。

CodeModule 物件代表一個元件內的程式碼,
要寫入程式就要用到 CodeModule。

另參考 VBE物件/模組/程式碼的讀取方式 (VBComponents)
« 最後編輯時間: 2005-04-22, 01:13:01 由 leonchou » 已記錄

leonchou
論壇維護群
*
離線 離線

文章: 1160


用程式刪除程式 (VBProject / VBComponents)
« 回覆文章 #1 於: 2005-04-22, 00:57:19 »

以下程式會刪除Book2中所有程式 --

Sub ddd()
Dim vbc As Object
With Workbooks("book2.xls").VBProject
For Each vbc In .VBComponents
 Select Case vbc.Type
 Case vbext_rk_Project, vbext_wt_Browser, vbext_ct_MSForm '註
  .VBComponents.Remove .Item(vbc.Name)

 Case Else
  .VBComponents(vbc.Name).CodeModule.DeleteLines 1, _
  .VBComponents(vbc.Name).CodeModule.CountOfLines

 End Select
Next
End With
End Sub

註:VBComponent.Type
vbext_rk_Project模組的集合(Module)Type =1
vbext_wt_Browser物件類別(Class1)Type =2
vbext_ct_MSForm自訂表單(UserForm)Type =3
已記錄

leonchou
論壇維護群
*
離線 離線

文章: 1160


刪除特定程式碼 (VBProject / VBComponents)
« 回覆文章 #2 於: 2005-04-22, 01:04:13 »

刪除 Sheet1 所有的代碼:

Sub DelSheetCodes()
Dim cMdl As Object
Set cMdl = ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule
n = cMdl.CountOfLines
cMdl.DeleteLines 1, n
End Sub

最後二行亦可直接寫成
cMdl.DeleteLines 1, cMdl.CountOfLines
已記錄

leonchou
論壇維護群
*
離線 離線

文章: 1160


匯入程式碼 (VBProject / VBComponents)
« 回覆文章 #3 於: 2005-04-22, 01:09:15 »

例如你已從另一活頁簿匯出Module2的程式碼於 C:\module2.bas
以下將 module2.bas 匯入目前workbook,
會產生一個 Module2 模組及其程式碼 --

Sub ImpCodes()
ActiveWorkbook.VBProject.VBComponents.Import "C:\module2.bas"
End Sub
已記錄

hsieh
版主
*
離線 離線

會員性別: 男
文章: 3890



Re: 用程式寫程式 (VBProject / VBComponents)
« 回覆文章 #4 於: 2007-05-01, 18:02:14 »

程式碼:
Sub 匯出()
Application.VBE.ActiveVBProject.VBComponents("Module1").Export ("C:\test.bas")
End Sub
Sub 匯入()
ActiveWorkbook.VBProject.VBComponents.Import "C:\test.bas"
End Sub
將模組匯入匯出的方法
已記錄

回答滿意嗎?
  記得告訴我哦!!
頁: [1] 向上 列印 
« 上一篇主題 下一篇主題 »
跳到:  


本頁花了 0.104 秒, 以及 20 次的資料庫查詢.