运行时错误1004 - 找不到BloombergUI

时间:2018-03-06 11:07:08

标签: excel vba excel-vba bloomberg

我正在运行一个批处理文件,该文件执行在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

2 个答案:

答案 0 :(得分:0)

我相信你的语法不正确。

  

Application.Run可用于运行用Visual Basic编写的宏或   Microsoft Excel宏语言,或在DLL或中运行函数   XLL。

     

您指定的宏可以是具有宏名称的字符串,   或指示功能 a的Range对象   注册DLL(XLL)函数的注册ID 。如果是一个字符串   使用时,将在活动工作表的上下文中评估字符串。

此外,如果您使用较新版本的Excel,则会产生更多问题,因为我认为XLA是较旧的文件类型,因此被XLAM取代。< / p>

有关详细信息,请参阅以下链接,特别是this一个和this一个

更多信息:

答案 1 :(得分:0)

当Excel以编程方式实例化时,Bloomberg加载项无法加载...我认为您需要每次都重新加载它。

在调用 Application.Run "bloombergUI.xla!RefreshAllStaticData"

之前确保AddIn在那里
    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