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. hdu5145 莫队算法

    这题说的是个了n个数字 然后 在L 和R 区间内的数字的排列有多少种方案, 这里我们通过 将 这n长度的字符串 分成sqrt(n) 块然后 一个属性 他们的l 属于 那个快  以这个为第一关键字 ,然 ...

  2. AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 3. Data Structures Fundamental Data Structures

    10410 这题说的是给了一棵多叉树的 bfs遍历轨迹 和dfs 遍历 轨迹 在父节点向叶子节点扩展的时候优先遍历编号较小的节点.我还原出这课树特殊判定 根据bfs的顺序来建立这课树,用一个队列安排要 ...

  3. Linux命令: 替换字符串

    敲命令按以下顺序 ①vim filename ②e ③i ④ESC 1    :s/str1/str2    把当前行的第一个str1替换成str2 2    :s/str1/str2/g    把当 ...

  4. Linux基础命令---split

    split 将一个大文件切割成较小的文件,默认情况下每1000行就会切割一次.分割后的文件,默认以xaa.xab.xac等命名.用户亦可以指定名字的前缀,例如指定前缀test,那么分割后的文件是tes ...

  5. 如何写出一个让人很难发现的bug?

    程序员的日常三件事:写bug.改bug.背锅.连程序员都自我调侃道,为什么每天都在加班?因为我的眼里常含bug. 那么如何写出一个让(坑)人(王)很(之)难(王)发现的bug呢? - 1 -新手开发+ ...

  6. 20145329 《网络对抗技术》Web基础

    实践目标 Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前端javascipt 理解JavaScript的基本 ...

  7. 20135234mqy-——信息安全系统设计基础第十一周学习总结

    第八章 异常控制流 8.1异常 异常是异常控制流的一种形式,它一部分是由硬件实现的,一部分是由操作系统实现的. 异常就是控制流中的突变,用来响应处理器状态中的某些变化. 8.1.1异常处理 异常号是到 ...

  8. Weex 简介

    weex简介 Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能.可扩展的 native 应用,为了做到这些,Weex 与 Vue 合作,使用 Vue 作为上层框架,并遵循 ...

  9. 【深度学习】Pytorch学习基础

    目录 pytorch学习 numpy & Torch Variable 激励函数 回归 区分类型 快速搭建法 模型的保存与提取 批训练 加速神经网络训练 Optimizer优化器 CNN MN ...

  10. UVa 1151 买还是建

    https://vjudge.net/problem/UVA-1151 题意: 平面上有n个点,你的任务是让所有n个点连通.为此,你可以新建一些边,费用等于两个端点的距离平方和.另外还有q个套餐可以购 ...