Sub AbsorbThisProcedure()

    If Application.VBE.MainWindow.Visible = False Then
MsgBox "请先激活VBE编辑窗口再执行!"
Exit Sub
End If On Error Resume Next
Set VbCodePane = Application.VBE.ActiveCodePane '获取当前代码窗口
If Err.Number = 1004 Then
MsgBox "请勾选“信任对VBA工程对象模型的访问”"
Exit Sub
Else
If Err.Number <> 0 Then
Exit Sub
End If
End If
On Error GoTo 0 Dim CodeMod As CodeModule
Dim CodeContent As String
Dim CurCodePane As Object
Dim ProcName As String
Dim LineCount As Long
'Dim OneAddIn As AddIn
Dim Wb As Workbook
Dim Sht As Worksheet
Dim Rng As Range
Dim FindRng As Range
Dim StartLine&, EndLine&, StartCol&, EndCol& Set CurCodePane = ActiveWorkbook.VBProject.VBE.ActiveCodePane
CurCodePane.GetSelection StartLine, StartCol, EndLine, EndCol ProcName = ActiveWorkbook.VBProject.VBE.SelectedVBComponent.CodeModule.ProcOfLine(StartLine, vbext_pk_Proc) Debug.Print ProcName StartLine = ActiveWorkbook.VBProject.VBE.SelectedVBComponent.CodeModule.ProcStartLine(ProcName, vbext_pk_Proc)
LineCount = ActiveWorkbook.VBProject.VBE.SelectedVBComponent.CodeModule.ProcCountLines(ProcName, vbext_pk_Proc) Set CodeMod = Application.VBE.ActiveCodePane.CodeModule
CodeContent = CodeMod.Lines(StartLine, LineCount) Debug.Print CodeContent If Len(CodeContent) = 0 Then Exit Sub msg = MsgBox("是否确定添加本过程到加载宏?按是继续执行!按否退出执行!", vbYesNo)
If msg = vbNo Then Exit Sub Set Wb = ThisWorkbook
Set Sht = Wb.Worksheets("CodeData")
With Sht EndRow = .Range("B65536").End(xlUp).Row
Set Rng = .Range("B1:B" & EndRow)
Set FindRng = Rng.Find(What:=ProcName, LookAt:=xlWhole) If FindRng Is Nothing Then
Set Rng = .Range("B65536").End(xlUp).Offset(1)
Rng.Value = ProcName
Rng.Offset(0, 1).Value = CodeContent Else
msg = MsgBox("模块名称已经存在,是否覆盖模块代码?", vbYesNo, "Tips")
If msg = vbNo Then
GoTo FreeObject
Else
FindRng.Offset(0, 1).Value = CodeContent
End If
End If End With Call AddMenu Wb.Save
FreeObject:
Set CodeMod = Nothing
Set Wb = Nothing
Set Rng = Nothing
Set FindRng = Nothing End Sub

  

20170719xlVbaAbsorbProcedure的更多相关文章

随机推荐

  1. python excel练习:新建sheet、修改名称、设定颜色、打印sheet名称,复制,保存

    练习: 新建一个sheet 设定一个sheet的插入位置 修改sheet的名称为‘xiaxiaoxu’ 设定该sheet的背景标签的颜色 获取全部sheet的名称,打印每个sheet的名称 copy一 ...

  2. 配置QT Mingw & opencv

    可以直接从这里下载别人构建好的 https://github.com/huihut/OpenCV-MinGW-Build --------------------------------------- ...

  3. Vlock用于有多个用户访问控制台的共享 Linux 系统

    当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么.如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统. 要感谢Vlock(Vi ...

  4. ACM题目————困难的串

    题目描述 如果一个字符串包含两个相邻的重复子串,则称他是“容易的串”,其他串称为"困难的串".例如,BB,ABCDACABCAB,ABCDABCD都是容易的串,而D,DC,ABDA ...

  5. MySQL Crash Course #19# Chapter 27. Globalization and Localization

    Globalization and Localization When discussing multiple languages and characters sets, you will run ...

  6. 20145304 刘钦令 Exp2 后门原理与实践

    20145304 刘钦令 Exp2 后门原理与实践 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 浏览网页时,或许会触发网站中隐藏的下载代码,将后门程序下载到默认地址. 下载的 ...

  7. Python3基础 list 推导式 生成与已知列表等长度+元素为0的列表

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. MSM8937系统启动流程【转】

    本文转载自:https://blog.csdn.net/chenzhen1080/article/details/54945992?utm_source=blogxgwz8 1 Boot Addres ...

  9. 小Z的袜子(莫队分块)题解

    小Z的袜子(hose) 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  10. 51nod 1080 两个数的平方和

    没心情写数学题啦啊   好难啊 #include<bits/stdc++.h> using namespace std; set<int> s; set<int>: ...