允许多台计算机上的Web连接而无需提示

时间:2018-07-18 16:48:12

标签: excel vba

我有一个工作表,该工作表具有到两个Web服务器的连接,每个Web服务器都返回一个JSON字符串并将其格式化为表格。一个连接到Google Maps,另一个连接到USGS Seismic数据库。

我正在使用Excel的内置查询功能,并且我通过“查询和连接”工具设置了两个连接。工作表的用户每次更新工作表中的地址字段时,都会运行一个宏,该宏更新查询URL以包括新参数。之所以可以在我的机器上运行,是因为我最初设置了连接。

当其他人在另一台机器上使用工作表时,他们必须手动选择如何连接到每个外部连接。这是通过“访问Web内容”对话框(见下文)进行的,在该对话框中,他们必须为每个连接选择“匿名”。如果用户在更改地址字段之前未执行此操作,则宏将运行,但Excel将冻结并崩溃,因为“访问Web内容”对话框会尝试打开但无法打开。

“访问Web内容”对话框(来自在线的随机图像)
This is the "Access Web Content" dialog box that must be completed (random image from online)

我需要通过VBA自动设置外部连接以匿名连接并运行,而无需尝试打开上述对话框。

用于重置其中一个查询(至USGS)的代码:

Sub ResetSeismicJSONQuery()

    Application.ScreenUpdating = False

    Dim wb As Workbook: Set wb = ActiveWorkbook
    Dim urlRange As Range: Set urlRange = Application.Range("URL_USGS")
    Dim jsonQuery As WorkbookQuery: Set jsonQuery = wb.Queries("USGSQuery")
    Dim newQueryFormula As String
    Dim seismicTable As ListObject: Set seismicTable = wb.Sheets("jsonQueryResults").ListObjects("USGSQuery")

    ' Get query formula
    newQueryFormula = ReplaceURL(jsonQuery.Formula, urlRange.Text)

    jsonQuery.Formula = newQueryFormula
    seismicTable.Refresh
    Application.CalculateUntilAsyncQueriesDone

    Application.ScreenUpdating = True

End Sub

是否可以通过编程方式修改查询以自动进行匿名连接,以便在新计算机上运行时“访问Web内容”对话框不会尝试打开?

值得注意的是,一旦有人浏览过“访问Web内容”对话框,他们就不必为该特定连接再次进行操作。

0 个答案:

没有答案