В VBA я пытаюсь использовать WebQuery для инструмента, который я пишу, который извлекает финансовые данные.
Я создаю WebQuery с подобным кодом:
url = "URL;http://my.url.com/"
With Worksheets("Sheet1").QueryTables.Add(Connection:=url, Destination:=Worksheets("Sheet1").Range("A1"))
.PostText = "Param1=Foo&Param2=Bar"
.Name = "My Query"
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 1
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Проблема, с которой я сталкиваюсь, заключается в том, что для my.url.com требуется базовая аутентификация идентификатор пользователя и пароль.
Если я просто запущу этот код, я получу ошибку выполнения 1004; он не запрашивает учетные данные аутентификации.
Но если я перейду на ленту «Данные» Excel, выберу «Из Интернета», а затем перейду на http://my.url.com/ в их мини-веб-браузере у меня запрашивают идентификатор пользователя и пароль.
После закрытия этого окна и повторного запуска моего кода VBA без каких-либо изменений запрос работает. Но после закрытия Excel и повторного запуска он снова терпит неудачу, если я не пройду этот чрезвычайно уродливый шаг ручной аутентификации. Даже если я сказал Internet Explorer сохранить эти учетные данные навсегда.
Как я могу заставить VBA программно аутентифицировать WebQuery с помощью базовой аутентификации, чтобы мне не нужно было делать этот дополнительный шаг?
(Редактировать: Либо это, либо в Excel есть параметр, который заставляет это приглашение появляться независимо от того, как был инициирован WebQuery?)
Я использую Excel 2010 (32-разрядная версия) в Windows 7, но мои целевые пользователи могут использовать различные версии Excel (все в Windows).