使用VBA重新下载报告,但不影响现有报告(MS Excel)

2020-08-27 15:27发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我正在设计和监督MS Excel中使用的程序。 当前,用户将在工作表的单元格中输入所需的参数,一旦用户单击链接到SAP vba宏的按钮,这些参数将使用VBA推送到Analysis for Office。

完成这些操作后,通过SAP将4个报告下载到工作簿中的单独工作表上。 用户可以根据自己的喜好修改这些报告。 在使用该程序几个小时后,需要根据该程序的使用方式重新下载四个报告之一。 您如何只下载四个报告之一而不是全部下载四个报告? 我们只希望重新下载4个报告之一。 这样可以保留用户对其他3个报告所做的更改。

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我正在设计和监督MS Excel中使用的程序。 当前,用户将在工作表的单元格中输入所需的参数,一旦用户单击链接到SAP vba宏的按钮,这些参数将使用VBA推送到Analysis for Office。

完成这些操作后,通过SAP将4个报告下载到工作簿中的单独工作表上。 用户可以根据自己的喜好修改这些报告。 在使用该程序几个小时后,需要根据该程序的使用方式重新下载四个报告之一。 您如何只下载四个报告之一而不是全部下载四个报告? 我们只希望重新下载4个报告之一。 这样可以保留用户对其他3个报告所做的更改。

谢谢

付费偷看设置
发送
7条回答
Nan4612
1楼-- · 2020-08-27 15:54

Rowan,

我建议您检查AfO工作簿中使用的VBA,因为这听起来像是编写为自定义功能的脚本。

此致,

Martijn van Foeken | Interdobs

何必丶何苦呢
2楼-- · 2020-08-27 16:00

对不起,但不清楚...请举一个详细的例子!

jovirus
3楼-- · 2020-08-27 16:10

亲爱的瓦迪姆·卡林宁,感谢您为阅读我的问题所做的努力, 希望为您提供帮助。 如果这是私事,那就容易了; 我不能只是将代码粘贴到这个开放的公共论坛上。 但是,从字面上讲,它适用于所有密集用途。 使用的代码是:

私人子工作簿_Open()
     激活
     呼叫数据导入
 结束子

 子DataImport()

     '刷新内部SAP程序变量名和值
     调用Application.Run(" SAPExecuteCommand"," Refresh")
    
     '将内部SAP程序的刷新行为设置为关闭并暂停更新
     调用Application.Run(" SAPSetRefreshBehaviour","关闭")
     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","开")

     调用Application.Run(" SAPSetVariable"," 0BWVC_COUNTRY"," US")
     调用Application.Run(" SAPSetVariable"," 0BWVC_MATERIAL","硬件")
     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","关闭")
     调用Application.Run(" SAPSetRefreshBehaviour","开")

     '允许SAP Analysis for Office下载数据
     调用Application.Run(" SAPExecuteCommand"," PauseVariableSubmit","关闭")

  '下面的调用提取所有数据并将其显示在四个相应的工作表上
     调用Application.Run(" SAPSetRefreshBehaviour","开")

 结束

上面的代码从字面上看是《 SAP Analysis插件用户指南》中使用的确切代码。 该代码运行时,在用户登录Web服务后将通过SAP Business Objects BI平台下载四个报表。

然后,该文件将以" Formula Alias"的形式下载以下四个报告:

DS_1

DS_2

DS_3

DS_4

这些报告中的每个报告都有一个在HANA上称为BW的系统别名。 它们都有各自不同的数据源技术名称。

这些数据源链接到交叉表(不确定其含义或定义); 并放在不同工作表上的单独单元格上。

就这样。 以上就是我们目前用于办公室代码的所有SAP Analysis。 每次我们运行上面的代码。 重新下载所有四个数据源。 我们只想隔离一份DS_X报告。

我尝试使用以下代码:

调用Application.Run(" SAPExecuteCommand","刷新"," DS_4")

那是行不通的,

我尝试使用以下代码:

调用Application.Run(" SAPExecuteCommand"," RefreshData"," DS_4")

那是行不通的。

我尝试将以上代码与子DataImport()一起使用

仍然无法正常工作。

尝试从工作簿打开事件中调用数据时没有任何作用。

此外,每次调用刷新数据时,都会刷新所有四个数据源。

我想我的问题是:

您可以从工作簿打开事件中运行并调用SAP分析吗? (仍然会收到错误消息,指出宏SAPExecuteCommand不存在,等等。如前所述。我相信这是因为工作簿尚未完全启动,因此系统尚未完全识别分析加载项。/p>

我的第二个问题,如果使用底两行之一; 主子DataImport()是否需要先运行? 这是因为用户将重新打开工作簿并尝试在不设置这些变量的情况下重新下载报告。

调用Application.Run(" SAPExecuteCommand","刷新"," DS_4")

调用Application.Run(" SAPExecuteCommand"," RefreshData"," DS_4")

我真的希望这可以为我们的目标提供更清晰的轮廓。 如果没有,我深表歉意,并想感谢你们两个人都想回答并提供帮助。

Rowan

派大星 ヾ
4楼-- · 2020-08-27 16:04

Rowan Conaghan

能否发布您的VBA 代码在这里?

Cikesha
5楼-- · 2020-08-27 16:07

尝试执行过程:

公共Sub RefreshSingle()
    结果暗淡
    lResult = Application.Run(" SAPExecuteCommand"," Refresh"," DS_4")
    MsgBox CStr(lResult)
 结束Sub 

您在消息框中有什么?

P.S。 您真的有名称为" DS_4"的数据源吗?

CPLASF-自律
6楼-- · 2020-08-27 15:50

"我不能只是将代码粘贴到这个开放的公共论坛上。" -您真的认为您的密码对这个论坛中的任何人都有价值吗?

一周热门 更多>