ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于如何把vba功能集成到excel选项卡上

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-23 19:32 来自手机 | 显示全部楼层 |阅读模式
各位老师好,我编写了一个vba程序,想将它的功能固化到excel选项卡上,目前的实现方法是将该代码保存在某个工作簿的vba模块里,再新建一个自定义选项卡,在新选项卡下建立新组,再将该vba模块放到这个组下面,这种方法虽然能实现我在任意工作簿都可以调用该vba程序,但是存在几个弊端:
1、每次打开任意工作簿,我存放vba模块的工作簿也会同时被打开;
2、我存放vba程序的那个工作簿不能删除,如果删除了,则无法继续使用。
请教老师们平时做开发时,是如何实现将vba程序功能集成在excel选项卡里而不存在以上弊端的方法的?

TA的精华主题

TA的得分主题

发表于 2023-2-24 09:30 | 显示全部楼层
可在论坛知识树版块中搜索”封装“、”VSTO开发“,学习了解相关知识。
https://club.excelhome.net/tree

TA的精华主题

TA的得分主题

发表于 2023-2-24 11:25 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-2-24 11:52 | 显示全部楼层
image.png
image.png
image.png
image.png

比較簡單的方法是用增益集, 簡體版不知叫什麼。
1)把寫好VBA的檔案存檔成為"*.xlsm"
2)打開Excel 順序點 檔案>選項, 之後如上圖加載增益集。
3)在xlsm檔案中編寫代碼吧~

*想在XCEL上E加入選項卡
  1. Option Explicit

  2. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  3. '關閉前清空增益集選項卡
  4.    With Application.CommandBars("Worksheet Menu Bar")
  5.    
  6.       On Error Resume Next
  7.       
  8.       .Controls("&MyFunction").Delete
  9.       
  10.       On Error GoTo 0
  11.       
  12.    End With
  13. End Sub

  14. Private Sub Workbook_Open()
  15.    Dim objPopUp As CommandBarPopup
  16.    Dim objBtn As CommandBarButton
  17.    
  18.    With Application.CommandBars("Worksheet Menu Bar")
  19.    
  20.       On Error Resume Next
  21.       
  22.       .Controls("MyFunction").Delete
  23.       
  24.       On Error GoTo 0
  25.       
  26.       '加入選項卡的子項
  27.       Set objPopUp = .Controls.Add( _
  28.                                 Type:=msoControlPopup, _
  29.                                 before:=.Controls.Count, _
  30.                                 temporary:=True)
  31.                                 
  32.    End With
  33.    
  34.    objPopUp.Caption = "整理格式" '選項卡標題名字
  35.    
  36.    Set objBtn = objPopUp.Controls.Add '加入子按鈕
  37.    
  38.    With objBtn
  39.       .Caption = "GO" '子按鈕名字
  40.       .OnAction = "RunProcess" 'Module 中程序名
  41.       .Style = msoButtonCaption
  42.    End With

  43. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-25 23:14 来自手机 | 显示全部楼层
jack5d 发表于 2023-2-24 11:52
比較簡單的方法是用增益集, 簡體版不知叫什麼。
1)把寫好VBA的檔案存檔成為"*.xlsm"
2)打開Exc ...

谢谢老师,相关问题已解决
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 00:41 , Processed in 0.037388 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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