以编程方式将加载项宏添加到快速访问工具栏

2023-12-15

我有一个用于格式化 Excel 报告的宏。该宏需要在许多不同的工作簿上运行,因为每天都会生成报告并将其保存到新文件中。这已经在我的个人作业簿中了。我现在需要分享这个宏。

我的计划是将该加载项放在我的本地加载项文件夹中。在那里进行任何更新并运行一个例程,将插件复制到网络位置并将其设置为只读和隐藏。其他用户的本地计算机上不会有该插件,因此当他们重新启动 Excel 时,更新就会生效。

我创建了一个“虚拟安装程序工作簿”,它将从网络位置加载插件,并确保用户不会将插件复制到本地计算机。

我希望这个虚拟工作簿向快速访问工具栏添加一个用于加载项的按钮,这样我就不必向用户解释该过程。我还没有找到一种方法可以在保留用户当前的 UI 设置的同时执行此操作。我想大多数用户都没有对他们的用户界面进行太多调整,但我宁愿不为弄乱某人的用户界面负责。

我仍在学习如何使用 VBA,并且它正在部署在网络环境中,这对我来说也有点新鲜。

Note:

  • CommonSizeAR 代码位于 Common Size AR.xlam 的 module1 中,DeployAddIn 位于模块 2 中。
  • Workbook_Open 存储在 Common Size AR installer.xlsm 的“此工作簿”中。
Private Sub deployAddIn()

    Dim strAddinDevelopmentPath As String
    Dim strAddinPublicPath As String 

    strAddinDevelopmentPath = "C:\AddIns" & Application.PathSeparator
    strAddinPublicPath = "W:\NetworkDrive" & Application.PathSeparator
    Application.DisplayAlerts = False

    With ThisWorkbook
        .Save
        On Error Resume Next
        SetAttr strAddinPublicPath & .Name, vbNormal
        On Error GoTo 0
        .SaveCopyAs Filename:=strAddinPublicPath & .Name
        SetAttr strAddinPublicPath & .Name, vbReadOnly + vbHidden
    End With

    Application.DisplayAlerts = True

End Sub

Private Sub workbook_open()

    Dim Result As Integer

    Result = MsgBox("Would you like to install the Common Size AR Add-in?", _
      vbYesNo + vbQuestion, "Install?")

    If Result = vbNo Then
        Application.ThisWorkbook.Close SaveChanges:=False
        Exit Sub
    End If

    On Error Resume Next
    AddIns("Common Size AR").Installed = False
    On Error GoTo ErrorHandler1

    AddIns.Add Filename:="W:\NetworkDrive\Common Size AR.xlam", Copyfile:=False
    AddIns("Common Size AR").Installed = True
    MsgBox "Add-in Installed!", vbOKOnly + vbInformation, "Done!"
    Application.ThisWorkbook.Close SaveChanges:=False

    Exit Sub

ErrorHandler1:
    MsgBox "Install Failed! Please let Developer know", vbOKOnly + vbCritical, "Error!"
    Exit Sub 

End Sub

运行子添加菜单 - 这将创建添加选项卡,添加菜单 使用按钮运行removemenu sub,它将接受添加 菜单选项卡和按钮消失

Option Explicit

Sub AddMenu()
Dim Mycbar As CommandBar, Mycontrol As CommandBarControl, Mypopup As CommandBarPopup

Application.ScreenUpdating = False
RemoveMenu ' call remove routine to ensure only one menu in place

Set Mycbar = CommandBars.Add _
(Name:="TO's Menubar", Position:=msoBarBottom, Temporary:=False)
' create new commandbar (menu bar)

Set Mycontrol = Mycbar.Controls.Add(msoControlButton)
' create new commandbar control (button type) on custom menu
With Mycontrol
.Caption = "Smiley Yes/No" ' mouseover text
.Tag = "Smiley" ' used for identification
.OnAction = "MySub" ' macro called with control
.FaceId = 59 ' appearance, based on built-in faces
End With

Set Mypopup = Mycbar.Controls.Add(msoControlPopup)
' create new commandbar control (popup menu type) on custom menu
With Mypopup
.BeginGroup = True ' start new group
.Caption = "TO Menu Items" ' mouseover text
.Tag = "TOMenu" ' used for identification
End With

'============================================================================
'Add various sub-menu items to the popup control

Set Mycontrol = Mypopup.Controls.Add(msoControlButton)
With Mycontrol
.Caption = "Text Converter" ' menu item description
.Tag = "Text Converter" ' used for identification
.OnAction = "TextCon" ' macro called with control
.FaceId = 59 ' appearance, based on built-in faces
End With

'===============================================================================

Mycbar.Visible = True
Application.ScreenUpdating = True

Set Mycbar = Nothing 'release memory
Set Mycontrol = Nothing
Set Mypopup = Nothing

End Sub

Sub RemoveMenu()
Dim Mycbar As CommandBar

On Error Resume Next ' in case its already gone
Set Mycbar = CommandBars("TO's Menubar")
Mycbar.Delete
Set Mycbar = Nothing 'release memory

End Sub

Sub MySub()
Dim ans As Integer

ans = MsgBox("Do you want to remove the custom menu?", vbYesNo, "TO Custom Menu")
If ans = 6 Then RemoveMenu

End Sub

'text converter
Sub TextCon()
Dim ocell As Range, ans As String

ans = Application.InputBox("Type in Letter" & vbCr & _
"(L)owercase, (U)ppercase, (S)entence, (T)itles ")

If ans = "" Then Exit Sub

For Each ocell In Selection.SpecialCells(xlCellTypeConstants, 2)
Select Case UCase(ans)
Case "L": ocell = LCase(ocell.Text)
Case "U": ocell = UCase(ocell.Text)
Case "S": ocell = UCase(Left(ocell.Text, 1)) & _
LCase(Right(ocell.Text, Len(ocell.Text) - 1))
Case "T": ocell = Application.WorksheetFunction.Proper(ocell.Text)
End Select
Next
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式将加载项宏添加到快速访问工具栏 的相关文章

  • excel公式剥离html

    我想从文本值的左侧和右侧剥离所有 html 我有这个
  • VBA - 使用字符串串联调用子例程

    是否可以使用字符串串联来调用 VBA 中的子例程 例如 Sub Call This 2019 do something end sub Sub From this Call Call This str 2019 Sub 我使用这种方法没有任
  • StAX XML 两个必需标签之间的所有内容

    开始学习 StAX 使用 XMLStreamReader 我遇到了一些问题 如何获取标签之间的所有内容作为文本 我的意思是 我知道所需标签的名称 当我找到它时 我必须转到关闭标签 并且我在它们之间找到的所有内容都必须附加在某个字符串上 例如
  • 在 Access VBA 中获取 Combobox.Value

    我有这个代码 If Me Combobox Value My Text Then 然而 由于我想测试 我的文本 是否是唯一选择的值 因此跳过了条件 我也尝试过 Me Combobox Column 1 and Me Combobox Tex
  • vba Excel 中的多个查找请求(在查找中查找)

    我正在尝试执行一种嵌套查找请求 用例是我需要在一个工作表上查找组 如果找到 则从找到的行中的单独列中获取用户 ID 值 然后在另一张纸 然后它应该执行一系列操作 然后在第一张表中找到下一个出现的组 我的代码是 LookupGroup Spl
  • 提高此 Excel 公式性能的最快方法是什么?

    这是从下面的帖子更进一步的内容 如何克服Excel中公式的最大长度限制 excel的一个bug https stackoverflow com questions 32604740 how to overcome the max lengt
  • 如何从Excel调用VBA函数

    我有一个 excel 文件 我必须在其中放置验证规则 我有一个单元格表示 客户时间 用户可以在其中输入时间 但它是自定义时间 用户可以这样输入时间 23 45 98 20 100 30 用户不能输入字符串 并且不能输入除冒号之外的特殊字符
  • 随着数据的增加自动填充公式并动态排序[重复]

    这个问题在这里已经有答案了 我想对工作表中的数据进行排序 该工作表每天都会在第二个工作表中获取新行 问题是 如果我使用 SMALL 函数并自动填充单元格直到最后一行 A102482 或类似的内容 我的文件会变得非常巨大且滞后 gt 20mb
  • 用于 RSS feed 解析的 Objective-C 库?

    我正在为 iOS 应用程序寻找一个 Objective C 库 该库将解析并显示 RSS 提要中的文章 具体来说 我正在寻找为新闻网站制作一个应用程序 如果可能的话 该框架应该能够使用各种 RSS XML 结构 嗯 有两个不同的新闻网站 一
  • 在浏览器中读取wsdl文件

    当我尝试在浏览器中打开 WSDL 文件 http localhost something file wsdl 时 我被提议下载该文件 但我希望能够在浏览器中以 XML 字符串 形式查看 而不是下载 谢谢 如果您的服务器未发送 WSDL 文件
  • 如何在 xslt 2.0 中获取与此场景相关的特定 XML 元素索引?

    我想使用 XSLT2 0 将一个 xml 转换为另一个 xml 在这样做时 我想找到一些与我在此处解释的场景相关的 XML 元素索引 这是 XML 文档
  • 需要 XSL 文件将内部 xml 测试格式转换为 Junit 格式(xUnit Plugin for jenkins)

    我正在尝试编写一个 XSL 将我的 XML 转换为 jenkins 采用的 JUNIT 格式 见下文 我的 xml 看起来像这样 我有几个 类 例如 数据中心 或 网络
  • 如何自动将图表从 Excel(或 Calc)导出为 PNG

    问题 我正在开发一个 Web 应用程序 它将数据从数据库导出到 Excel 包括图表 这首先是导出的主要原因 现在我希望图表在网页上也可见 而不需要导出数据并打开下载的 Excel 文件 这当然可以使用 JS 库来完成 但是由于图表相当复杂
  • Excel 公式或 VBA:在具有 2 列条件的单独表中查找匹配的地址 - 无辅助列

    我需要公式结构方面的帮助 我有2张桌子 我想找到 a 列和 b 列相等的匹配项并获取表 2 中的地址 它们将是唯一的条目 例如 项目信息表 A B C 1 Name Company Project 2 Chris Evans Apple I
  • 在没有加载项的情况下加载 Excel

    All 我编写了一个电子表格应用程序 用户通过双击我提供的图标来加载它 问题是用户有很多插件 这会降低 Excel 的速度 如何使用命令行开关加载 Excel 来禁用所有加载项 该问题适用于 Excel 2003 和 Excel 2007
  • 自动完成功能在特定层次结构的 XML 文件中不起作用

    特别是 XML 节点层次结构 例如 DrawerLayout gt RelativeLayout gt ImageButton 自动完成功能无法按预期工作 建议列表包含无效项目 例如 android src里面没有显示ImageButton
  • 使用 SpreadsheetLight 进行行计数

    我正在寻找一个类似于 DataTable Rows Count 的函数 它可以与 SLDocument 一起使用来找出有多少行中有数据 SpreadsheetLight 中有可用的东西吗 还有其他方法可以实现这一目标吗 Brendan SL
  • Excel宏-将逗号分隔的条目拆分为新行[重复]

    这个问题在这里已经有答案了 我目前在一张纸上有这些数据 Col A Col B Col C 1 A angry birds gaming 2 B nirvana rock band 我想要做的是将第三列中的逗号分隔条目拆分并插入新行 如下所
  • Java DocumentBuilder - XML 文件中的缩进错误

    我尝试使用 DocumentBuilder 用 Ja va 编写一个简单的 XML 文件 我期望 XML 文件如下所示
  • C 语言中的套接字如何工作?

    我对 C 中的套接字编程有点困惑 You create a socket bind it to an interface and an IP address and get it to listen I found a couple of

随机推荐

  • 迁移后 Blazor WebAssembly 版本 5 生成错误

    After 迁徙 to Net Core 5我的独立BlazorWebAssembly项目无法构建并出现以下错误 我尝试了很多方法但没有修复 NETSDK1082 没有可用于指定 RuntimeIdentifier browser wasm
  • Bootstrap 手风琴防止在 asp.net 回发时崩溃

    我有一个引导手风琴 我尝试在回发时重新打开最后打开的窗格 就像有人单击我页面上的保存按钮一样 我找到了这个解决方案 在页面刷新 导航时保留 Twitter Bootstrap 折叠状态 但我无法对此发表评论 因为我作为用户没有足够的积分 由
  • 回调函数示例

    我很难理解如何callback 函数在以下代码块中使用 我们如何使用callback 作为一个函数 在函数体内 当function callback 还没有定义 将 true false 作为参数传递到下面的回调函数中会有什么影响 感谢您的
  • Haskell 树上折叠的变化

    给定一棵树定义为 data Tree a Leaf Node Tree a a Tree a deriving Eq Show 我想使用该功能 foldTree b gt a gt b gt b gt b gt Tree a gt b fo
  • 如何阻止 Filezilla 更改我的换行符?

    我正在从 Linux Web 服务器下载 perl CGI 文件 它有 Unix 换行符 我在 Windows PC 上用一个不错的文本编辑器 Geany 编辑它 它保留了这些换行符 然后我用 Filezilla 再次上传它 它有 DOS
  • 如何在 Python 中将数字列表转换为 jsonarray

    我有以下格式的一行 row 1L 0 1 0 2 1234L 1 134L 2 现在 我想要在文件中写入以下内容 1 0 1 0 2 1234 1 134 2 基本上将上面转换为 jsonarray 吗 Python 中是否有内置方法 库或
  • 如何解决 org.postgresql.jdbc.PgConnection.createClob() 尚未实现

    例外情况 当启动 spring boot 应用程序时 我收到了 引起原因 java sql SQLFeatureNotSupportedException 方法 org postgresql jdbc PgConnection create
  • 如何在禁用 SSL 卸载的情况下使 ARR 正常工作? 502.3 错误网关

    所以我已经遇到这个错误好几天了 我用谷歌搜索了又搜索 但似乎没有什么可以解决我的情况 我希望有人可以提供帮助 问题 当我在 ARR 路由规则 中禁用 SSL 卸载时 我收到以下信息 502 Web 服务器在充当 Web 服务器时收到无效响应
  • 学习使用 Xcode 和 Objective-C 基础知识进行 iPhone 开发的最佳地点是哪里? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 当我说最好的地方时 我指的是实体课程 研讨会 讲习班等 它可能遍布世界各地 Thanks 我会避开神学院来学习 Objective C 我听说过关于大书呆子牧场培训班
  • C++ 多重继承转换如何工作?

    这个问题帮助我理解了一些 但我的问题与他们的略有不同 据我了解 C 中的基本类型转换涉及将内存中的结构重新解释为不同的结构 例如 class Building int sqFootage class Office public Buildi
  • RMarkdown 生成 HTML 文档注释/评论窗格

    我正在从 Word 文档报告转向使用 RMarkdown 生成的 HTML 文件 然而 我的客户在放弃 Word 后会错过的一大功能是能够轻松地直接向文档添加注释 是否存在一些 HTML Java 等代码片段 可以在 HTML 文档的一侧添
  • ASP GridView 在按钮单击时获取行值

    我正在做什么 单击图像按钮时重置用户密码 到目前为止已完成 添加了 GridViewCommandEventHandler 它正确触发 使用代码来自MSDN 我的 e CommandArgument 得到一个空字符串 并且在运行时抛出错误
  • 运行节点应用程序时 bcrypt 无效的 elf 标头

    我正在为学校开发一个 Nodejs 项目 我无法使用 npm 安装 bcrypt 所以我安装了 bcrypt nodejs 并且该项目昨天运行良好 但是今天 当我做 节点应用程序 时 我遇到了这个错误 node modules bcrypt
  • PHP $_REQUEST 作为数组

    我有一个搜索表单 我想将搜索词作为数组 REQUEST 这样我就可以列出每个搜索词 将每个搜索词包装在一个跨度中以进行样式设置 我怎么做 编辑 这是请求的代码
  • Swift 3.0 无法解析 DispatchQueue 的标识符

    我几个小时以来一直试图找到这个问题的答案 但仍然无济于事 我正在尝试使用以下代码 func fetchPosts ref child Amore child Posts observeSingleEventOfType Value with
  • 我正在尝试将 SFTP 文件(SAS 数据集或令牌)从一台服务器传输到 SAS 中的另一台服务器

    这是我第一次尝试使用 SAS 对文件进行 SFTP 我尝试使用文件名语句 但出现了一些错误 let user userid filename source sftp input sas7bdat user user pass passwor
  • 如何使用多部分实体将图像上传到服务器?

    我正在创建一个应用程序 并在我的应用程序中添加了一个选项来从图库浏览图像 然后上传到服务器 我之前问过这个问题 但没有得到好的答案 为了上传图像 我正在遵循本教程http mayanklangalia blogspot in 2014 04
  • 在 DLL 上使用 WPF 动态创建图像(而不是 GDI+)

    我需要动态生成图像 在阅读教程后here我意识到我可以使用 WPF 中的所有控件和布局来生成渲染 然后将其另存为 JPG 这个想法是使用它来代替 GDI 这是相当原始的 问题是 如何创建一个常规 dll 文件 该文件将以编程方式生成 WPF
  • 使用进程构建器执行两个命令

    我正在尝试编写一个程序 从命令提示符编译另一个 java 文件 不过我有一个问题 此时 它已成功执行编译 Mocha java 的第一部分 但是 我希望它也执行该文件并显示它的输出内容 它什么也没显示 有什么建议么 pb new Proce
  • 以编程方式将加载项宏添加到快速访问工具栏

    我有一个用于格式化 Excel 报告的宏 该宏需要在许多不同的工作簿上运行 因为每天都会生成报告并将其保存到新文件中 这已经在我的个人作业簿中了 我现在需要分享这个宏 我的计划是将该加载项放在我的本地加载项文件夹中 在那里进行任何更新并运行