VBA代码移植问题

cuiyue4420 2005-06-08 05:03:42
我在一个Excel表中写的VBA代码或者说是程序,怎样在别的Excel表中使用,是否非要用组件?
...全文
124 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
arden1019 2005-06-14
  • 打赏
  • 举报
回复
Const APPNAME As String = "尺寸五金表"

Private Sub Workbook_AddinInstall()
'调用CreateMenu添加菜单
CreateMenu
MsgBox "已经生成菜单至:工具--五金尺寸表"
End Sub

Private Sub Workbook_AddinUninstall()
'调用DeleteMenu移除菜单
DeleteMenu
MsgBox "已经移除菜单:工具--五金尺寸表"
End Sub

Sub DeleteMenu()
Dim XLCommandBar As String
Dim XLMenu As String
Dim XLMenuItem As String
Dim NewMenuItem As String

XLCommandBar = "Worksheet Menu Bar"
XLMenuItem = ""
NewMenuItem = APPNAME & "..."
XLMenu = Application.CommandBars(XLCommandBar).FindControl(msoControlPopup, 30007).Caption
On Error Resume Next
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(XLMenuItem).Controls(NewMenuItem).Delete
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(NewMenuItem).Delete
End Sub
Sub CreateMenu()

Dim NewItem As CommandBarButton
Dim XLCommandBar As String
Dim XLMenu As String
Dim XLMenuItem As String
Dim NewMenuItem As String
XLCommandBar = "Worksheet Menu Bar"
XLMenu = Application.CommandBars(XLCommandBar).FindControl(msoControlPopup, 30007).Caption '我不敢确定30007这个ID总是ok
XLMenuItem = ""
NewMenuItem = APPNAME & "..."

On Error Resume Next
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(XLMenuItem).Controls(NewMenuItem).Delete
Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(NewMenuItem).Delete
On Error GoTo 0
If XLMenuItem = "" Then
Set NewItem = Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls.Add
Else
Set NewItem = Application.CommandBars(XLCommandBar).Controls(XLMenu).Controls(XLMenuItem).Controls.Add
End If
With NewItem
.Caption = NewMenuItem
.OnAction = "mainsub" '新菜单触发的过程名
.FaceId = 0
.BeginGroup = True
End With
Exit Sub

If Err <> 0 Then
MsgBox "菜单创建错误,请重新尝试", vbInformation, "提示"
End If
End Sub
上面是我写的一个宏里面的thisworkbook,它添加了菜单。你可以参考一下:
看看这一句:.OnAction = "mainsub" '新菜单触发的过程名
mainsub 是我的程序的主函数。
arden1019 2005-06-14
  • 打赏
  • 举报
回复
在你的1.xla中的thisworkbook中添加这样的函数:
Private Sub Workbook_AddinInstall()
在函数体中可以添加一个按钮、菜单什么的操作,将按钮或菜单指向你的宏的主函数。

这样在加载宏后,就可以得到一个可以运行此宏的方法
cuiyue4420 2005-06-14
  • 打赏
  • 举报
回复
ding
cuiyue4420 2005-06-13
  • 打赏
  • 举报
回复
ding
arden1019 2005-06-10
  • 打赏
  • 举报
回复
也许你的xla可以多些功能,比如在excel打开时候自动添加一个按钮,并让它指向你的宏程序入口。
lovevba 2005-06-10
  • 打赏
  • 举报
回复
你的问题不是很清楚?
如果想在EXCEL中,直接运行, 是可以的,按一楼的做法,在EXCEL界面中加入一个按钮(法方是,自定义—命令—宏—添加自定义按钮,)将按钮拖到工具栏中,右击“指定宏...”,找到你的宏。就行了。
不知你的VB界面是在VBA中做的吗?
大羽飞鹤 2005-06-10
  • 打赏
  • 举报
回复
我在学习
cuiyue4420 2005-06-10
  • 打赏
  • 举报
回复
我的代码根本没有保存成宏,只是保存了一个1.xla文件,放在了OFFICE里面的libary,但是我加载这个宏(1.xla,选择复选框,点确定),没有做任何事啊(我的代码是在C盘创建一个EXCEL文档)
icansaymyabc 2005-06-10
  • 打赏
  • 举报
回复
别的Excel文件加此宏时虽然没有反应!但是你如在菜单中选择“工具”-〉“宏”-〉“宏”或按 Alt-F8 你就会看到多了很多宏,你选择需要的宏运行它即可。
cuiyue4420 2005-06-09
  • 打赏
  • 举报
回复
楼上的大哥,我的代码是在点击一个按钮执行的,保存xla的时候只能在
Excel窗口中,而不是在VB的界面中,用别的Excel文件加此宏时没有反应啊!
arden1019 2005-06-08
  • 打赏
  • 举报
回复
另存为xla,添加到你的office目录的library下。然后在excel中使用加载宏
一个小巧而又十分强大的Excel加载项(插件)---OBS.DLL,大小1M左右,却能突破微软的技术壁垒,打破Excel的常规应用模式,开辟了Excel的另类应用空间。加载后新增一个"OBS"工具条,适用于Excel2002及以上版本,推荐在Excel2002/2003中使用。 OBS.DLL的主要功能是制作和编辑OBS文档,一种类似TreeView控件的文档。换句话说,OBS.DLL将Excel表格变成了一个功能强大的超级TreeView控件!普通TreeView控件只能显示一列数据(仅一个字段),而OBS表格却可以显示更多的列(N个字段),而且每个字段都可以汇总(这一点又要比Excel自身的分类汇总更直观、简单),再配合VBA,可以让您轻松驾驭超灵无比的Excel! 当然,OBS.DLL还具备一些很有特色的功能,对Excel的功能来说,应该是一个很好的补充。如: 1、中文简繁互换:在简体中文和繁体中文之间进行转换。 2、进制转换:在二进制、八进制、十进制、十六进制之间相互转换。 3、人民币大小写互换:在Excel中,很多时候需要将小写的金额数字转换成大写,而Excel提供的函数转换出来的格式并不符合中国人的习惯,所以... 4、数字签名:对Excel表格中的内容进行签名保护,主要是防止提供者提供的内容被非法修改。可以用于Excel公文的电子签名,实现真正的无纸办公... 5、保存为图片文件:相当于Excel的照相机功能(有过之而无不及)。可以将Excel中的单元格区域、Shape对象、图片、图表等(甚至是组合形式)以gif、jpg、bmp等各式保存到磁盘中。 6、全功能批注----真正所见即所得的批注编辑器。 7、VB/VBA代码归纳与重写:对VB/VBA代码进行混淆,大大降低代码的可读性,是一种保护VB/VBA代码的很有效的方法。详细的注释说明和一目了然的名称将有助于设计阶段的调试和查错,但是代码一旦发布后,这些优点将会使黑客轻而易举地破解你的成果,呵呵,用这个吧,保证黑客对您的VB/VBA代码一点兴趣和胃口都没有!! 8、解除Excel文档的内部密码。很多时候,我们需要设置Excel表格/工作簿的保护密码,可是随着时间的推移,这些密码很可能遗忘了,怎么办?很着急啊!!!哈哈,用这个保证在2分钟之内解决问题(换个角度:不要再自欺欺人了,Excel的内部密码形同虚设)。 9、信息加密/解密。对Excel文档中的一些敏感信息进行加密处理,即使文档被破解了,里面的信息仍然很安全。可以说这个功能是对Excel安全的一个有力补充。 10、工程代码锁定解锁器。可以撤销Excel的VBA保护密码(对word、Access同样有效) 11、控制和保存功能。这个功能能满足我们不用记一个密码就能非常有效地保护我们的Excel文档,而且可以免除来自微软的威胁。 12、Cookie管理器。在信息时代,没有网络怎么可以?上网时间长了,就会发现在临时文件夹中挤满了cookies,不但占据磁盘空间,而且还可能泄露秘密。用“清理cookie”命令吧,又觉得有些没有必要删,否则下次还得再输一遍;一个一个删吧,东西太多,想都不能想。怎么办??用这个啊!!只要一次性设置要保留的cookie并选中“退出Excel时自动清理”即可。以后只要退出Excel,你的cookies目录中就不会再有其它乱七八糟的cookie了。 13、超级预览。可以根据当前的选择内容自动调整预览对象。如果选中的是单元格区域,就只预览你选中的区域;如果选中的是图表,则仅预览选中的图表;如果只是一个单元格,则自动显示分页符... ... 14、屏幕锁定。当我们需要临时离开电脑而又不想关闭Excel文档时(并不局限于Excel文档,也可以是其它,但前提是要运行Excel),可以启动这个功能,这样其他人就不可能看到您不希望他们看到的东西。 15、尝试打开忘记密码的文件。暴力破解Excel的打开密码,注意:这个仅对拥有密码设计方案的人有效。 16、Excel加载项/宏管理器。对当前Excel环境下的加载宏/加载项/VBA加载项进行列表,并可以查看相关属性、修改运行状态,甚至是一键破解。 17、Excel对象管理器,可以批量转换Excel中的对象(图片、Shape、图表等)到图片文件; 18、在Excel中播放背景音乐、定时执行特定的程序、整点报时,一定很惬意... 19、屏幕录像及捕捉。哦,这个功能很强大啊。可以截取屏幕图像、录制屏幕变化、图片格式转换、批量bmp转成AVI文件、AVI文件转成动画GIF文件、图片标注... ...强大的不行啦,赶快去看看吧。快捷键:Ctrl+Alt+SpaceBar 或者 Ctrl+左WinKey(微软左徽标键) 20、DLL神探,DLL的最大威胁就是注入到系统进程中,让人防不胜防... 21、一键恢复Excel的系统菜单。这个功能... ... 22、Excel版简易游戏。只是几个可以在Excel中玩的游戏... 23、计划横道图(甘特图)。偶觉得还是用Excel来做横道图最方便了... ... 24、偶将呆板的网络调查和网络投票移植到OBS.DLL中了,变被动为主动! ... ... 有兴趣的请访问:http://www.ChinaOBS.com 。本站热诚欢迎您的到来。
建立运行环境-Excel Vba,可移植到VB环境中(需修改一些代码) '仿制简单的SQL查询语句,用于对二维数组的查询 '参照SQL语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle] ' '实现功能: ' 依条件设置查询数组,返回包含查询字段(或全部字段)的数组,可多条件组合。 ' 条件运算符包括:> = < >= <= <> , like(正则表达式) ' '附注: ' 使用此函数,需要在文件中引用正则表达式脚本 Microsoft VBScript Regular Expressions x.x ' (根据不同的电脑配置和环境此处会有差异) '算法简要: ' 1、查询条件运算符:仅有 >, =, <, >=, <=, <> , like(正则表达式) ' 本函数中仅有上述运算符。原因在于,更多的运算符编制逻辑过于复杂,又不太常用。 ' 为了尽可能多地容纳各种运算关系,添加了正则表达式匹配运算, ' 在某个单一条件中,正则几乎可以容纳绝大部分的比对运算关系了。 ' 2、数字比较: ' 采用了将数字型字符串类型转换为数字之后再比较的方法,结果更为准确。 ' 3、其他算法和运算速度: ' 编制过程中,试验过使用 正则+逻辑分支+表达式引用 的方法, ' 可以实现几乎等同于SQL查询语句的复杂功能,而且代码更简捷。 ' 但运算速度相差过于悬殊(大概几十到上百倍 - "一闪而过"和"一袋烟"的差距!),最后不得不放弃。 ' 所以现在的版本相当于一个简化了的select语句,但对于大多数查询情况而言够用了。

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧