Excel加载项问题

2020-09-27 23:36发布

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

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


我在32位EPM 10中有一个Excel自动化宏,效果很好。 我使用.VBS脚本通过Win7作业计划程序启动宏。 该宏将打开模板EPM报表,使用SetContextOptions更改利润中心和时间,使用RefreshActiveWorkBook刷新报表,然后使用SaveAs保存。 对于45个利润中心重复该过程。 再次,这在EPM 10中效果很好。

在64位Win10虚拟机上迁移到Office/EPM的64位分析后,该过程的行为异常。 当宏从作业计划程序运行时尝试使用SetContextOptions时,它将失败。 即使故障触发了On Error命令,也不会出现错误代码-Err.Number为零,Err.Description为空白。 作业调度程序条目在两种环境中都是相同的。 两者都设置为"仅在用户登录时运行"。 同样,在调度程序触发宏时以及在我通过右键单击调度程序条目并选择"运行"手动触发宏时,都会发生故障。

如果我打开VBA项目,并用F5手动启动宏,则代码将正常工作。 为什么SetContextOptions在批处理模式下与交互式模式下的行为有所不同?

这是我正在使用的命令:

EPMObj.SetContextOptions wb," PRD BPC"," TIME",strPeriod,False

谢谢

汤姆

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

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


我在32位EPM 10中有一个Excel自动化宏,效果很好。 我使用.VBS脚本通过Win7作业计划程序启动宏。 该宏将打开模板EPM报表,使用SetContextOptions更改利润中心和时间,使用RefreshActiveWorkBook刷新报表,然后使用SaveAs保存。 对于45个利润中心重复该过程。 再次,这在EPM 10中效果很好。

在64位Win10虚拟机上迁移到Office/EPM的64位分析后,该过程的行为异常。 当宏从作业计划程序运行时尝试使用SetContextOptions时,它将失败。 即使故障触发了On Error命令,也不会出现错误代码-Err.Number为零,Err.Description为空白。 作业调度程序条目在两种环境中都是相同的。 两者都设置为"仅在用户登录时运行"。 同样,在调度程序触发宏时以及在我通过右键单击调度程序条目并选择"运行"手动触发宏时,都会发生故障。

如果我打开VBA项目,并用F5手动启动宏,则代码将正常工作。 为什么SetContextOptions在批处理模式下与交互式模式下的行为有所不同?

这是我正在使用的命令:

EPMObj.SetContextOptions wb," PRD BPC"," TIME",strPeriod,False

谢谢

汤姆

付费偷看设置
发送
8条回答
土豆飞人
1楼-- · 2020-09-27 23:44

还是查看我的示例代码以使用VBA创建正确的任务计划项(EPM在内部也做同样的事情):

显式选项

 子SetTask()
 '-------------------------------------------------  -----------------
 '此示例安排了一个任务,以启动FPMXLClient.BooksPublication.exe 60秒
 '从任务注册时开始。
 '-------------------------------------------------  -----------------

 '一个常数,它指定基于时间的触发器。
 常量TriggerTypeTime = 1
 '一个常量,指定可执行的操作。
 常量ActionTypeExec = 0

 点心服务
 '*****************************************************  *******
 '创建TaskService对象。
 设置服务= CreateObject(" Schedule.Service")
 呼叫服务。连接

 '*****************************************************  *******
 '获取用于在其中创建任务定义的文件夹。
 昏暗的root文件夹
 设置rootFolder = service.GetFolder(" \")

 'taskDefinition变量是TaskDefinition对象。
 昏暗的任务定义
 'flags参数为0,因为它不受支持。
 设置taskDefinition = service.NewTask(0)

 '*****************************************************  *******
 '定义有关任务的信息。

 '通过创建RegistrationInfo对象来设置任务的注册信息。
 昏暗的regInfo
 设置regInfo = taskDefinition.RegistrationInfo
 regInfo.Description =" BPC分发"
 regInfo.Author =" VEKHOME01 \ KalininVE"

 '*****************************************************  *******
 '设置任务负责人
 昏暗的校长
 设置主体= taskDefinition.principal

 '将登录类型设置为6-TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD
 Principal.LogonType = 6


 '通过以下方式设置任务计划程序的任务设置信息
 创建一个TaskSettings对象。
 调暗设定
 设置设置= taskDefinition.settings
 settings.Compatibility = 1
 settings.DisallowStartIfOnBatteries =假
 settings.StopIfGoingOnBatteries =假
 settings.Enabled = True
 settings.StartWhenAvailable = True
 settings.Hidden = False
 settings.Priority = 5
 昏暗的怠速设置
 设置idlesettings = settings.idlesettings
 idlesettings.StopOnIdleEnd =假
 idlesettings.RestartOnIdle = False

 '*****************************************************  *******
 '创建一个基于时间的触发器。
 暗光触发器
 设置触发器= taskDefinition.triggers

 暗光触发
 设置触发器= triggers.Create(TriggerTypeTime)

 '触发变量,定义何时触发触发器。
 昏暗的startTime,endTime为变体

 昏暗的时间
 time = DateAdd(" s",60,Now)'开始时间=从现在开始60秒
 'startTime格式:YYYY-MM-DDTHH:MM:SS
 startTime =格式(时间," yyyy-mm-ddThh \:nn \:ss")

 Debug.Print" startTime:"&startTime

 trigger.StartBoundary =开始时间
 trigger.ID =" TimeTriggerId"
 trigger.Enabled = True

 '*****************************************************  **********
 '为要执行的任务创建动作。

 '向任务添加操作以运行notepad.exe。
 昏暗的动作
 设置操作= taskDefinition.Actions.Create(ActionTypeExec)
 Action.Path =" C:\ Program Files(x86)\ SAP BusinessObjects \ EPM加载项\ FPMXLClient.BooksPublication.exe"
 Action.Arguments =""" C:\ Users \ KalininVE \ Documents \ PC_NW \ KalininVE \ Books \ ENVNAMEXXX \ PLANNING \ WebExcel \ BatchFiles \ D XX.X.XX.XX_8000 ENVNAMEXXX PLANNING KalininVE"""

 Debug.Print"已创建任务定义。即将提交任务..."

 '*****************************************************  **********
 '注册(创建)任务。
 '任务名称:" AAAAAAAAAAAAAAAAAAAAAA";  taskDefinition; 标志:0x6-TASK_CREATE_OR_UPDATE;  WindowsUsername; 密码; 登录类型:6-TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD

 调用rootFolder.RegisterTaskDefinition(" AAAAAAAAAAAAAAAAAAAAAA",taskDefinition,6," VEKHOME01 \ KalininVE"," PASSWORDXXX",6)
 Debug.Print"任务已提交。"

 结束

更正:将时间转换函数替换为format()以简化代码。

Bunny_CDM
2楼-- · 2020-09-27 23:41
将EPMObj暗化为对象
     昏暗插件作为对象
     设置addin = Application.COMAddIns(" SapExcelAddIn")。Object
     呼叫addin.ActivatePlugin(" com.sap.epm.FPMXLClient")
     设置EPMObj = addin.getplugin(" com.sap.epm.FPMXLClient")
     调用EPMObj.Connect(" PRD BPC"," ID","密码")
     EPMObj.SetContextOptions wb," PRD BPC"," TIME",strPeriod,False 

一周热门 更多>