0

我正在尝试在 BERT 中运行 Excel 2016 宏。在电子表格中,我可以将宏作为一个名为“Button_To_Click”的按钮来操作。这也是 Excel 文档的宏列表中的宏名称。我正在使用命令EXCEL$Application.Run("BERT.Call", "Button_To_Click")并接收消息Error: attempt to apply non-function

这是我第一次使用 BERT 或任何与 VBA 相关的东西(我对 R 更熟悉),我不清楚有关如何使在 Excel 中创建和存储的宏在 BERT 中工作的文档。一个更完整的例子如下:

wb <- EXCEL$Application$get_ActiveWorkbook();
INsheet <- wb$get_Sheets(1); #get first sheet in active workbook

S = c(155,157,159)
range <- MEMsheet$get_Range( "B10:B10" ); #change B10 to S[1]
range$put_Value(S[1]);

### 'Run Model' button is named 'Button_To_Click'. ###
EXCEL$Application.Run("BERT.Call", "Button_To_Click");
4

1 回答 1

0

运行宏的函数需要调用宏的名称和工作簿中承载它的工作表。它使用保存在宏菜单中的宏名称以及与之相关的操作,而不是可点击按钮本身上写的文本。在这种情况下,该按钮标有文本“Button_To_Click”,但宏的实际名称是“CalculateButton”,保存在 Sheet2 中,与之关联的操作是“Click”。Run.Macro()只要有 BERT 脚本的来源,BERT 命令就足够了。

source(file.path("C:/Users/MyName/Documents/BERT2/examples/excel-functions.r" )) #loads special BERT functions needed to have Excel and R interact
Run.Macro ( "Sheet2.CalculateButton_Click") #runs the macro named 'CalculateButton' located in Sheet2
于 2020-02-19T22:14:24.913 回答