我正在运行一个批处理文件,该文件执行在Bloomberg Terminal上的Excel工作表中运行宏的VBScript。
Excel工作表在单元格中包含许多BDP公式。一切都很好。最初,我有一个问题从Bloomberg更新数据并运行宏,但这是通过使用bloombergui.xla.RefreshAllStaticData +一个计时器解决的。
当在excel中手动执行时,宏运行完美,但是当我尝试通过批处理& amp;来实现自动化时,我得到“运行时错误1004找不到bloombergui.xla ...” VBS。
任何想法如何解决这个问题?我想我已经用尽谷歌的所有选项。
宏:
Sub UpdateWeekly()
Application.Run "bloombergUI.xla!RefreshAllStaticData"
Application.OnTime (Now + TimeValue("00:00:25")), "WeeklyPDF"
End Sub
Sub WeeklyPDF()
Application.ScreenUpdating = True
ActiveSheet.Range("A1:V225").Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="O:\LOCATION" & Format(Date, "MMMM-DD-YYYY") & " " & "Weekly", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Application.PrintCommunication = False
End Sub
的VBScript:
Dim args, objExcel
Set args = WScript.Arguments
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open args(0)
objExcel.Visible = True
objExcel.Run "UpdateCreditWeekly"
objExcel.ActiveWorkbook.Close(0)
objExcel.Quit
答案 0 :(得分:0)
我相信你的语法不正确。
Application.Run可用于运行用Visual Basic编写的宏或 Microsoft Excel宏语言,或在DLL或中运行函数 XLL。
您指定的宏可以是具有宏名称的字符串, 或指示功能,或 a的Range对象 注册DLL(XLL)函数的注册ID 。如果是一个字符串 使用时,将在活动工作表的上下文中评估字符串。
此外,如果您使用较新版本的Excel,则会产生更多问题,因为我认为XLA
是较旧的文件类型,因此被XLAM
取代。< / p>
有关详细信息,请参阅以下链接,特别是this一个和this一个。
Ron de Bruin:How do I use Application.Run in Excel
Stack Overflow:Run Excel Macro from Outside Excel Using VBScript From Command Line
Stack Overflow:How do I call an xll addin function from vba?
答案 1 :(得分:0)
当Excel以编程方式实例化时,Bloomberg加载项无法加载...我认为您需要每次都重新加载它。
在调用 Application.Run "bloombergUI.xla!RefreshAllStaticData"
Sub UpdateWeekly()
Dim blpAddin As Workbook
On Error Resume Next
Set blpAddin = Workbooks("bloombergUI.xla")
On Error GoTo 0
If Not blpAddin Is Nothing Then ' Check if add-in is loaded or not
Application.Run "bloombergUI.xla!RefreshAllStaticData" ' refresh Bloomberg formulas
Application.OnTime (Now + TimeValue("00:00:25")), "WeeklyPDF" ' wait till bloomberg Formulas calculation complete
Else
Debug.Print "Bloomberg Add-in is not loaded"
End If
End Sub
如果没有加载项,则需要添加/加载加载项
'To load the Add-in
Application.Addins.Add(file path & name)
或强>
AddIns("Add-In Name").Installed = True