ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12023|回复: 13

[求助] 怎么在打开加载宏文件之后自动将自己添加到加载宏里面

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-10-5 16:56 | 显示全部楼层 |阅读模式
RT
比如有一个加载宏文件A.xla,要求在这个xla文件中写一段代码,将A.xla自动添加到加载宏里面并生效,而不用通过【工具】-【加载宏】-【浏览】……的手动方式添加。

TA的精华主题

TA的得分主题

发表于 2010-10-5 16:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-5 18:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-5 22:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-10-5 23:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-10-6 13:40 | 显示全部楼层
直接把加载宏将加载宏保存到计算机中的
Documents and Settings/<user name>/Application Data/Microsoft/AddIns 文件夹中

TA的精华主题

TA的得分主题

发表于 2010-10-7 19:47 | 显示全部楼层
这个可以安装,试试行不行。

test:


Sub auto_open()

    Dim MyPath$, Myname$, AddIname$

    On Error Resume Next

    MyPath = Replace(Application.StartupPath, "Excel\XLSTART", "AddIns")
    Myname = MyPath & "\" & ThisWorkbook.Name
    AddIname = Replace(ThisWorkbook.Name, ".xla", "")

    ThisWorkbook.SaveCopyAs (Myname)

    ''注册加载宏
    Shell "regsvr32 /s" & AddIname

    AddIns(AddIname).Installed = True    ''当已加载宏名称里存在该名称时才行,否则出错。

    MsgBox "加载宏已成功安装!", vbOKOnly + 64, "恭喜你            ^_^"

    ThisWorkbook.Close (False)

End Sub

TA的精华主题

TA的得分主题

发表于 2010-10-7 19:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
另外,还要增加代码,让加裁宏在另外前,将自动安装的部分代码自杀。


以下代码,请大家测试完善:




Option Explicit

Sub auto_open()

    Dim MyPath$, Myname$, AddIname$

    On Error Resume Next

    MyPath = Replace(Application.StartupPath, "Excel\XLSTART", "AddIns")
    Myname = MyPath & "\" & ThisWorkbook.Name
    AddIname = Replace(ThisWorkbook.Name, ".xla", "")

    Call 信任VBA访问
    Call 引用
    Call 代码自杀

    ThisWorkbook.SaveCopyAs (Myname)

    ''注册加载宏
    Shell "regsvr32 /s" & AddIname

    AddIns(AddIname).Installed = True    ''当已加载宏名称里存在该名称时才行,否则出错。

    MsgBox "加载宏已成功安装!", vbOKOnly + 64, "恭喜你            ^_^"

    ThisWorkbook.Close (False)

End Sub


Sub 信任VBA访问()    '

    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM", 1, "REG_DWORD"
    Set WshShell = Nothing

End Sub

Sub 引用()

    On Error Resume Next

    ThisWorkbook.VBProject.References.AddFromGuid _
            "{0002E157-0000-0000-C000-000000000046}", 5, 3    '引用Extensibility

    Application.ScreenUpdating = False
    Application.SendKeys "%(qtmstv){ENTER}"           '勾选"信任对于VB项目的访问’

    Application.ScreenUpdating = True

End Sub

Sub 代码自杀()

    On Error Resume Next

    Application.VBE.ActiveVBProject.VBComponents.Remove _
            Application.VBE.ActiveVBProject.VBComponents("auto_open")    '移除模块

End Sub


TA的精华主题

TA的得分主题

发表于 2010-10-8 11:02 | 显示全部楼层
Sub 添加加载宏()
    AddIns("VBE HTML Maker").Installed = True
End Sub

Sub 删除加载宏()
    AddIns("VBE HTML Maker").Installed = False
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-18 22:14 | 显示全部楼层

回复 8楼 hhzjxss 的帖子

我在2003下面试了一下,没有成功
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 17:55 , Processed in 0.048135 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表