Запросы данных Excel 2016, связанные с SQL, не обновляются при открытии рабочей книги - PullRequest
0 голосов
/ 24 октября 2019

У меня есть два запроса данных Excel, которые относятся к 1) и таблице SQL и 2) хранимой процедуре SQL. Я написал код VBA для обновления запросов при открытии рабочей книги в зависимости от того, подключен ли пользователь к нашей внутренней сети (я делаю это через вопрос к пользователю). Метод обновления вызывается, если пользователь указывает, что подключен к нашей сети.

Private Sub Workbook_Open()

Call HideAllWorksheets

Select Case Time
        Case Is < TimeValue("12:00")
            answer = MsgBox("Good morning, " & UCase(UserName()) & "!" & vbNewLine & vbNewLine & "Welcome to Client Profitability Reporting Self Service!" & vbNewLine & vbNewLine & "Are you currently connected to the DAN Network (Ethernet, Wireless, or VPN)?", vbQuestion + vbYesNo + vbDefaultButton2, "Welcome")
        Case Is < TimeValue("18:00")
            answer = MsgBox("Good afternoon, " & UCase(UserName()) & "!" & vbNewLine & vbNewLine & "Welcome to Client Profitability Reporting Self Service!" & vbNewLine & vbNewLine & "Are you currently connected to the DAN Network (Ethernet, Wireless, or VPN)?", vbQuestion + vbYesNo + vbDefaultButton2, "Welcome")
        Case Else
            answer = MsgBox("Good evening, " & UCase(UserName()) & "!" & vbNewLine & vbNewLine & "Welcome to Client Profitability Reporting Self Service!" & vbNewLine & vbNewLine & "Are you currently connected to the DAN Network (Ethernet, Wireless, or VPN)?", vbQuestion + vbYesNo + vbDefaultButton2, "Welcome")
    End Select

If answer = vbYes Then

 MsgBox "Thank you!  I'll update the workbook so that you have the latest data.", vbOKOnly, "Data Refresh"

Call RefreshAllData

Else
 MsgBox "Thank you!  I cannot update the workbook with the latest data, but you can still run reports with data from the last refresh.", vbOKOnly, "Data Refresh"

End If

UserInputForm.Show'

End Sub

Когда я открываю книгу, я вижу, что процедура выполняется, однако запросы никогда не обновляются. Когда рабочая книга открыта, я могу запустить код вручную, и он работает без проблем. Есть что-то в начальном соединении с сервером SQL, которое, кажется, не работает должным образом, когда рабочая книга открыта. Ниже приведен код обновления.

Sub RefreshAllData()    

    ActiveWorkbook.Connections("Query - pro ClientMap").Refresh
    ActiveWorkbook.Connections("Query - ClientProfAnalysisLocalCurrency").Refresh
    Application.CalculateUntilAsyncQueriesDone
    Application.DisplayStatusBar = True
    Application.StatusBar = "Refreshed at: " & Now()
    MsgBox "Data has been refreshed!"

End Sub

Параметр Включить фоновое обновление не отмечен для каждого запроса. Я пробовал разные способы обновления, и ни один из них не работает над открытой книгой. Тем не менее, каждый из них будет работать после того, как рабочая книга была открыта, и SQL-соединения каким-то образом были установлены.

Примечание: я получаю краткое сообщение «Загрузка .Net Framework» в строке состояния приложения, когда нажимаю кнопку «Запросы и соединения» на ленте данных. Кажется, это активирует соединение SQL.

Любая помощь будет принята с благодарностью!

...