excel - Excel VBA 命令栏
问题描述
我有一个 Excel 模型,用于通过 S&P Capital IQ Excel 插件(COM-Addin)提取数据。这个模型已经使用了几年没有任何问题,但现在我在这行代码上遇到错误:
Application.CommandBars.FindControl(Tag:="menurefreshdatacell").Execute
我尝试四处搜索,发现 CommandBars 可能已被 Microsoft Office Fluent 用户界面取代。但是,我似乎找不到解决方案或示例来说明这可能如何改变了上面的代码。
自从我使用VBA以来已经有一段时间了,所以很遗憾我自己无法解决这个问题,希望在这里找到一些更有能力的人。
下面是整段代码。选择一个指定区域,然后按插件中的“刷新选择”按钮。
如果我遗漏了什么,请告诉我,非常感谢您!
Sub Update_FactSet_formulas()
Application.ScreenUpdating = False
Sheets("Peer group_segments").Select
Range("PG_seg_data").Select
Application.CommandBars.FindControl(Tag:="menurefreshdatacell").Execute
以下是插件作者提供的公式,多年来一直没有改变,上面应该反映什么:
Public Sub RefreshSelection()
Dim Refreshbutton As CommandBarButton
Set Refreshbutton =
Application.CommandBars.FindControl(Tag:="menurefreshdatacell")
Refreshbutton.Execute
End Sub
解决方案
我发现以下内容对我有用:
Application.Run("CIQKEYS_RefreshSelection")
该函数来自 ciqfunctions 库,但您无需添加引用即可使其工作。但是,您可以通过执行以下操作来添加库:
- 工具
- 参考
- 检查 ciqfunctions
- 点击确定
要查看库中可用的所有函数:
- 去查看
- 选择对象浏览
- 检查 ciqfunctions
- 从左上角可能显示“”的下拉菜单中,选择 ciqfunctions
- 在类下,选择 IUdf
- 功能应出现在“成员”列中
同样,请注意,要使代码为我工作,我不需要将库添加到引用中,我只是想概述如何探索库,如果您选择的话。
还有以下刷新功能:
CIQKEYS_RefreshWorkBook
CIQKEYS_RefreshWorkBookRangeV
CIQKEYS_RefreshWorkSheet
CIQKEYS_RefreshWorkSheetRangeV
希望这对你有用!
推荐阅读
- azure - 当我尝试在 Azure 上部署 SLES 12 服务器时,无法在自定义脚本中执行“网络广告加入”
- spring-boot - 自定义用户的 Spring 安全身份验证失败
- python - 熊猫只选择列中唯一字符串在另一列中只有一个特定字符串的行
- laravel-5 - 我为 laravel-datatables 搜索设置列类
- javascript - 在 javascript 中,将持续时间(以分钟为单位)添加到 YYYYMMDDHHMMSS 日期/时间戳类型以获取新的日期/时间戳
- java - 通过电子邮件客户端从具有多个文本文件的应用程序发送电子邮件的代码问题
- matlab - 如何在MATLAB中用小数点后1位格式化科学计数法?
- odbc - Eiffel:ODBC 处理 BIGINT
- xml - XML isn't getting style information
- r - 如何从数据框中的不同列中搜索和提取匹配的单词?