1

我有一个工作簿,其中包含大约 50 张要按特定顺序刷新的工作簿(以避免 #rfr 错误,因为这些工作表是相互构建的)。

刷新是通过 Excel 的 EPM 插件完成的。我已激活 FPMXLclient 功能并尝试编写一些代码。我对编码和逻辑非常缺乏经验。在工作簿中,宏需要从最后一个选项卡开始,等待工作表刷新,然后移动到下一个选项卡(依此类推......)。下面是我编写的一些 VBA 代码的示例:

    Dim refreshList
        refreshList = Array("BS Analytic", "Balance Sheet")
        'There are more than just the 2 in the array (~50)
    Sub test_loop()
        Dim I
        For I = LBound(refreshList) To UBound(refreshList)
        MsgBox refreshList(I)
        Next I
    End Sub
    'Vba to refresh data
    Dim client As New EPMAddInAutomation
    Sub Refresh_Click()
        client.Refresh
    End Sub
    Sub AFTER_REFRESH()
        MsgBox "done"
    End Sub

其他信息:这也涉及 BPC 和 SAP。

4

2 回答 2

1

假设您的插件刷新了活动工作表,您的循环中可能会出现这样的情况:

Dim Sh As Worksheet
Set Sh = WorkSheets(RefreshList(I))
Sh.Activate
Client.Refresh
于 2019-12-18T06:13:00.283 回答
0

为什么不在数组中包含每个工作表编号,refreshList然后使用For each I in refreshList. 然后,这将按每次更新的顺序传播refreshList。如果它也从最后一张纸向后移动,您始终可以执行以下操作:

Sub Refresh_Click

Dim refreshList() As Integer
reDim refreshList(50)
for i = 0 to 49
    refreshList(i) = 50 - i
next
For each I in refreshList
    Sheets(I).EnableCalculation = false
    Sheets(I).EnableCalculation = true
Next
MsgBox "Done"

End Sub
于 2014-07-09T22:54:46.397 回答