首页 > 解决方案 > 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

标签: excelvba

解决方案


我发现以下内容对我有用:

Application.Run("CIQKEYS_RefreshSelection")

该函数来自 ciqfunctions 库,但您无需添加引用即可使其工作。但是,您可以通过执行以下操作来添加库:

  1. 工具
  2. 参考
  3. 检查 ciqfunctions
  4. 点击确定

要查看库中可用的所有函数:

  1. 去查看
  2. 选择对象浏览
  3. 检查 ciqfunctions
  4. 从左上角可能显示“”的下拉菜单中,选择 ciqfunctions
  5. 在类下,选择 IUdf
  6. 功能应出现在“成员”列中

同样,请注意,要使代码为我工作,我不需要将库添加到引用中,我只是想概述如何探索库,如果您选择的话。

还有以下刷新功能:

CIQKEYS_RefreshWorkBook
CIQKEYS_RefreshWorkBookRangeV
CIQKEYS_RefreshWorkSheet
CIQKEYS_RefreshWorkSheetRangeV

希望这对你有用!


推荐阅读