每当打开任何工作簿时运行 VBA 宏

2024-01-11

我创建了一个 Excel 加载项,尝试在打开此会话期间打开的任何和所有工作簿时运行。有时它会起作用 - 但并非总是如此,我不知道为什么。

我创建了一个文件,addin.xlam,并且在这个文件中,在ThisWorkbook, 我有:

Private XLApp As CExcelEvents

Private Sub Workbook_Open()
    Set XLApp = New CExcelEvents
End Sub

然后我根据此处的代码创建了一个类模块:http://www.cpearson.com/Excel/AppEvent.aspx http://www.cpearson.com/Excel/AppEvent.aspx

Private WithEvents App As Application

Private Sub Class_Initialize()
    Set App = Application
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    If Not ActiveWorkbook Is Nothing Then
        If InStr(ActiveWorkbook.Name, "New Quote") Then
            quoteCheck = MsgBox("Do you want to run the Quote Generator?", vbYesNo, "Quote Generator")
            If quoteCheck = vbYes Then
                prepare
            Else
                End
            End If
        End If
    End If
End Sub

如果我关闭 Excel 并从 Windows 资源管理器打开文件,则会出现以下行:

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)

并启动代码 - 如果相关工作簿的名称中包含“new quote”,则宏将运行。繁荣。完美的。

但是,在运行一次后,如果我打开另一个包含“新报价”字样的工作簿,则不会触发此私有子。为什么?

我怎样才能触发这个每一次 I open any作业簿?


显然,打开工作簿不会自动使其成为活动工作簿,至少在触发此事件处理程序时是这样。尝试这个:

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    If Not Wb Is Nothing Then
    If InStr(Wb.Name, "New Quote") Then
        quoteCheck = MsgBox("Do you want to run the Quote Generator?", vbYesNo, "Quote Generator")
        If quoteCheck = vbYes Then
            prepare
        Else
            End
        End If
    End If
End If
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每当打开任何工作簿时运行 VBA 宏 的相关文章

  • Excel 公式转 SUMIF 日期属于特定月份

    我有以下格式的 Excel 数据 Date Amount 03 Jan 13 430 00 25 Jan 13 96 00 10 Jan 13 440 00 28 Feb 13 72 10 28 Feb 13 72 30 仅当月份位于时 我
  • 绘制持续时间图表

    从我在写这篇文章之前所做的阅读中 我相当确定我需要创建甘特图 但我不知道这是否是正确的路线 需要将开始时间和结束时间的数据作为一个单位绘制在 Excel 图表上 Y 轴为日期 X 轴为一天中的小时 开始时间和结束时间的格式是 Excel 数
  • VBA Excel如何在文本框中写入Excel公式

    如何将Excel公式放入文本框中 我尝试过这样的事情 Sub CivBox With ActiveSheet Shapes Civils 3 Copy C26 Activate Paste Shapes Shapes Count Name
  • VBA FreeLibrary 不卸载 DLL

    当我使用完一个 DLL 文件后 我需要删除它 代码完成后清理 我尝试在 Excel VBA 中使用 LoadLibrary 和 FreeLibrary 但无论我做什么 Excel exe 都会坚持 DLL 文件 Public Declare
  • VBA在下一个空白行正确输入用户表单数据

    创建了一个用户表单 添加了一个文本框和一个组合框 添加了提交按钮 单击 提交 后 会将数据添加到电子表格中 据我所知和我所读到的 这是错误的 ActiveCell Value TextBox3 Text ActiveCell Offset
  • 将不连续范围从一张纸复制到另一张纸

    VBA 新手 也是第一次发帖 可能会问一个非常基本的问题 然而 我在互联网上 或在我拥有的参考书中 没有找到答案 所以我很困惑 如何将一张纸中的一堆间隔开的列放入另一张纸中 但没有间隙 例如 我想从这样的工作表中复制标记为 x 的单元格 x
  • VBA 将数据透视表的源数据更新到行尾

    我试图弄清楚当使用 VBA 数据更改时如何将数据透视表源数据更新到行尾 我当前的代码如下 Dim shBrandPivot As Worksheet Dim shCurrentWeek As Worksheet Dim shPriorWee
  • 将工作表保存为 CSV,且 Excel 公式完好无损

    我完全使用 VBA for Excel 工作 我的解决方案必须完全是程序化的 而不是用户驱动的 该解决方案的要求是用户启动一个宏来获取工作簿并将 8 个工作表保存到单独的 CSV 文件中 保留公式并丢弃公式分辨率 我有一系列工作表 sht
  • ReDim 保留“下标超出范围”

    我正在尝试将数据从 2 个双精度数组移动到 2 个不同的双精度数组 我不确定大小是多少 因为我正在从第一个数组中随机抽取样本并将其放入第二个数组中 当我添加 ReDim Preserve 行时 出现下标超出范围错误 Function Cre
  • 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

    我已经使用 Microsoft 查询创建了参数查询 如上所述here https superuser com questions 197453 run an sql query with a parameter from excel 200
  • 我需要使用 VBA 将数据从 Excel 插入 SQL Server

    我需要插入test vba xlsx将数据写入 SQL Server 到特定数据库 Sub insertion Dim conn As ADODB Connection Dim rs As ADODB Recordset Dim sConn
  • VBA - 使用字符串串联调用子例程

    是否可以使用字符串串联来调用 VBA 中的子例程 例如 Sub Call This 2019 do something end sub Sub From this Call Call This str 2019 Sub 我使用这种方法没有任
  • 使用 VBA 将数据从 Excel 导出到现有 PowerPoint 幻灯片

    我正在编写一个小型 excel 插件来进行一些简单的数据分析 但不幸的是我不是 VBA 程序员 到目前为止我已经做了什么 从巨大的 Excel 工作簿中获取数据并执行计算 将结果写入预先格式化的 Excel 骨架 文件 我接下来想要做什么
  • vba Excel 中的多个查找请求(在查找中查找)

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

    这是从下面的帖子更进一步的内容 如何克服Excel中公式的最大长度限制 excel的一个bug https stackoverflow com questions 32604740 how to overcome the max lengt
  • 如果工作表不存在,Pandas 将工作表附加到工作簿,否则覆盖工作表

    我正在使用 pandas 更新现有的 Excel 工作簿 当使用ExcelWriter对象 我可以覆盖工作表 如果存在 否则创建一个新工作表吗 我的代码附加了新工作表 但是当我尝试覆盖现有工作表时 它会附加一个名称略有不同的新工作表 例如
  • 使用Excel宏执行命令并关闭cmd窗口

    这是我现在正在尝试的 Sub del BJSFM files Call Shell cmd exe S K cd d C UTAS SA del f s q BJSFM gt nul vbNormalFocus End Sub 问题是命令窗
  • 为什么 MS Excel 在 Worksheet_Change Sub 过程中崩溃并关闭?

    当我在 Excel 工作表上运行 VBA 代码时 我遇到了 Excel 崩溃的问题 我正在尝试在工作表更改中添加以下公式 Private Sub Worksheet Change ByVal Target As Range Workshee
  • MS Office SaveAs 类型 FileDialog 在 vb 中带有过滤器

    我想创建一个带有过滤器的 另存为 文件对话框 但这似乎无法使用 FileDialog 类 Microsoft Office 12 0 对象库 实现 文档实际上提到了这一点here http msdn microsoft com en us
  • 使用VBA删除Excel中的非重复数据

    我尝试删除非重复数据并保留重复数据 我已经完成了一些编码 但什么也没发生 哦 这是错误 哈哈 这是我的代码 Sub mukjizat2 Dim desc As String Dim sapnbr As Variant Dim shortDe

随机推荐

  • phpMyAdmin 在哪里存储 phpMyAdmin 用户密码?

    在设置 phpMyAdmin 的过程中 创建了一个 phpMyAdmin 用户 当我查看 phpMyAdmin 数据库权限时 我可以看到该用户 哪个 PHP 文件存储该用户的密码 保罗 不存在 phpMyAdmin 用户这样的东西 phpM
  • Android 菜单上的复选框项目状态

    如何设置菜单的复选框项目部分的初始值 当我启动一个活动时 我想设置一个保存在共享首选项中的布尔值 menu menu
  • 使用 If、ElseIf、ElseIf 比使用 If、If、If 更好吗?

    使用之间真的有什么区别吗 If this Else If that Else 或使用 If this If that Else 执行速度更快吗 编译器或架构有什么区别吗 两者的内容有很大的区别this 块和that 块可以both以第二种形
  • 如何在 VB.NET 中将接口属性设置为只读?

    这是我之前关于接口的问题的后续 我收到了我喜欢的答案 但我不确定如何在 VB NET 中实现它 上一个问题 该属性应该是我的对象接口的一部分吗 https stackoverflow com questions 239909 should
  • 无法安装 Elasticsearch-5.x 的 Search Guard 插件

    由于限制 我不被允许从互联网上安装任何软件包 所以 这个命令对我来说安装没有用搜查卫士 https github com floragunncom search guard bin elasticsearch plugin install
  • 如果没有导航控制器,抽屉布局将无法工作

    为什么我们无法在没有导航 导航控制器的情况下在 Android 中设置抽屉布局 每当我们想要设置抽屉时 我们都需要一个导航控制器 就像下面这样 private lateinit var drawerLayout DrawerLayout p
  • 将 Sublime Text 3 设置为 git commit 文本编辑器

    我在将 sublime 设置为 git 提交消息编辑器时遇到问题 Using git config global core editor subl 错误 错误 无法运行 subl 没有这样的文件或目录 错误 无法启动编辑器 subl 请使用
  • gatsby 和 graphql:过滤特定的单个图像

    我不太了解 graphql 或 gatsby 但我相信通过将其放入 gatsby config js 中 我的所有图像都会加载到 graphql 中 resolve gatsby source filesystem options name
  • 我应该使用哪种 API 将用户权限提升为 Mac OS X 中的超级用户?

    我想将我的应用程序的权限提升为超级用户 安装程序应用程序通过显示来支持这一点这个对话框 http en wikipedia org wiki File Mac OS X Authenticate png 如何显示此对话框以提升权限 附言 我
  • 如何在 Android N 中的时间选择器中获取 30 分钟间隔

    我想要得到30 min interval from time picker dialog下面的代码可以正常工作Android N但不适用于最新设备 下面是我的代码activity public class MainActivity exte
  • 获取mysql资源字符串的第一行?

    这是我的问题 我需要数据库中的多行 并且我需要第一行来执行某些任务 然后再次遍历所有列表以创建记录集 query SELECT FROM mytable result mysql query query firstrow extract f
  • 使用 SAX 解析器解析 html

    我正在尝试使用 SAX 解析器解析普通的 html 文件 SAXBuilder builder2 new SAXBuilder try Document sdoc Document builder2 build readFile NodeL
  • 使用for循环生成Html表

    请帮助解决以下提到的场景 gt 我想在表格中显示从 1 到 30 的值 这样 1 2 3 应该出现在一个标签中 同样 4 5 6 应该出现在其他 tr 标签中 依此类推 直到 30 值 我想使用表格来显示表格元素中的值 其中像 1 这样的每
  • 您如何将其从 Perl 转换为 Python?

    我有一个 Perl 函数 它接受时间戳并返回未更改的时间戳 如果以前从未见过 否则它会附加一些字母以使其唯一 sub uniqify my timestamp shift state last ts 1 state next letter
  • 使用 C# DotNetZip 在内存中提取 zip 文件失败

    我正在尝试下载并解压 C 中的 zip 文件 特别是 DotNetZip 当我运行这段代码时 HttpWebRequest webRequest HttpWebRequest WebRequest Create reportUrl Http
  • 根据列值删除行

    有没有办法让我根据行包含的值删除行 例如 我有一个表 其中一列中的值包含 URL 值 例如 uk quitclock om2 asp uk quitclock om666 wav 在这里 我需要删除后缀以 WAV GIF 或 JPEG 结尾
  • (Python)socket.gaierror: [Errno 11001] getaddrinfo 失败

    我不确定这段代码有什么问题 我不断收到 socket gaierror 错误 import sys import socket import random filename whoiservers txt server name rando
  • Vim:缩进当前(空白)行并插入

    假设我在缓冲区中有当前文本 其中 标记光标 int main int argc char argv printf Hello world n I have indentexpr上 尽管解决方案是cindent or autoindent可能
  • 将 Kafka Streams 与依赖于标头中架构引用的 Serdes 结合使用

    我正在尝试使用 Kafka Streams 对 CDC 数据执行 KTable KTable 外键联接 我将读取的数据采用 Avro 格式 但它的序列化方式与其他行业序列化器 反序列化器 例如 Confluence 架构注册表 不兼容 因为
  • 每当打开任何工作簿时运行 VBA 宏

    我创建了一个 Excel 加载项 尝试在打开此会话期间打开的任何和所有工作簿时运行 有时它会起作用 但并非总是如此 我不知道为什么 我创建了一个文件 addin xlam 并且在这个文件中 在ThisWorkbook 我有 Private