Q
導入代碼行
3
A
回答
4
這可以使用Microsoft Visual Basic for Applications Extensibility 5.3(VBIDE)庫完成。有一些great examples at CPearson.com。我通常在開發時使用它來插入代碼片段。我個人會不舒服地執行存儲在Excel表格中的代碼,但是我測試了這個,它確實有效。
我的工作表:
A
1 MsgBox "I'm a test."
2 MsgBox "So am I."
我建立了一個空的子程序,我們會再插入從Excel工作表中。
Private Sub ProcToModify()
End Sub
這實際上將代碼插入到ProcToModify
子程序:
Sub ModifyProcedure()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim StartLine As Long
Dim NumLines As Long
Dim ProcName As String
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1") ' specify module to modify
Set CodeMod = VBComp.CodeModule
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Set ws = ThisWorkbook.ActiveSheet 'change this accordingly
Set rng = ws.Range("A1:A2") 'and this
For Each cell In rng
ProcName = "ProcToModify"
With CodeMod
StartLine = .ProcStartLine(ProcName, vbext_pk_Proc)
NumLines = .ProcCountLines(ProcName, vbext_pk_Proc)
.InsertLines StartLine + NumLines - 2, cell.Value 'insert each line at the end of the procedure to get them in the correct order.
End With
Next cell
End Sub
在運行時調用是這樣的:
Public Sub main()
ModifyProcedure
ProcToModify
End Sub
一張大Gotchya: 運行此代碼之前,您需要轉到Excel >>文件>>選項>>信任中心>>信任中心設置>>宏設置和ch eck「對VBA項目對象模型的信任訪問」。
我會想象那是因爲允許訪問項目對象是一個相當安全的風險。
從cpearson.com網站我聯繫到早些時候:
注意:許多基於VBA的計算機病毒通過 創建和/或修改VBA代碼傳播自己。因此,許多病毒掃描程序可能會自動並且沒有警告或確認刪除模塊,這些模塊會引用VBProject對象,導致永久性和不可挽回的 代碼丟失。有關詳細信息,請參閱您的防病毒軟件 的文檔。
相關問題
- 1. VBA代碼導入
- 2. 導入類時的Java運行代碼
- 3. SWIG - 導入時運行python代碼
- 4. 爲什麼導入*不運行導入的代碼?
- 5. 乳膠+源代碼導入
- 6. 導入使用Java代碼
- 7. 從網上導入代碼
- 8. Android Launcher2源代碼導入
- 9. 將html代碼導入html5
- 10. 導入Unicode XML代碼SQL
- 11. 用javascript導入HTML代碼
- 12. 行導致對代碼
- 13. 代碼簽入運行代碼分析
- 14. 將代碼導入到iphone項目後運行非常緩慢的代碼
- 15. 從C#導入非託管代碼導入到德爾菲#
- 16. 導入HTML代碼的unicode錯誤
- 17. 如何遠程導入代碼? IOS
- 18. 太多導入垃圾我的代碼
- 19. Visual Studio代碼Python導入錯誤
- 20. 將資源文件導入PyQt代碼?
- 21. 無法使用innerHTML導入javascript代碼
- 22. Java-打印導入類的源代碼
- 23. 從java代碼導入mysql數據庫
- 24. Android NDK導入模塊/代碼重用
- 25. 如何將代碼導入Subversion?
- 26. webpack代碼在導入庫中拆分
- 27. Android的Eclipse導入現有代碼
- 28. 將Spark源代碼導入Eclipse IDE
- 29. Visual Studio代碼pylint:無法導入'protorpc'
- 30. android導入系統源代碼到Eclipse
這可以使用VBIDE庫來完成,但請記住,如果我問*爲什麼*您想要這樣做? – RubberDuck
謝謝你會檢查出來以備將來使用。我意識到我可以通過將其放入循環來實現我的目標。但我在這方面使用PHP或任何語言的這種功能很多。我不必擔心創建函數和傳遞參數,只需導入一組代碼即可。 – dsauce