Как обновить строку подключения веб-запроса книги Excel с помощью VBA?

Я пытаюсь изменить строку подключения веб-запроса

Строка подключения веб-запроса

используя VBA, однако все ответы, которые я нашел в Интернете, дают решения, для которых требуется QueryTable, но в моей книге нет QueryTable по причинам, которые этот пост объясняет. У меня есть объект списка со свойствами карты XML.

Свойства карты XML

Я пытался использовать QueryTable для внешнего диапазона данных, External Data Range QueryTable

но форматирование происходит с измененными заголовками столбцов в алфавитном порядке.

изменены заголовки столбцов в алфавитном порядке

В идеале я хотел бы просто изменить GUID в моей существующей строке подключения (поскольку срок их действия истекает и их необходимо периодически обновлять), чтобы сохранить форматирование XML из моего источника. Если это невозможно, и мой единственный вариант — использовать QueryTable, то мне нужен способ отформатировать результаты из QueryTable, чтобы заголовки столбцов не включали «/row/@».


person Dracius    schedule 26.04.2019    source источник
comment
Соединение должно быть восстановлено с помощью ThisWorkbook.Connections.   -  person Mathieu Guindon    schedule 26.04.2019
comment
Это часть проблемы; решения, которые я нашел для обновления ConnectionString, а не QueryTable, указывают соединение OLEDB, но у меня есть XMLMAP, и когда я пытаюсь назначить его как WorkbookConnection, я получаю множество ошибок «Определяемое приложением или объектно» . !Ошибки объекта   -  person Dracius    schedule 26.04.2019
comment
Это очень важная информация, которую определенно стоит включить в ваш вопрос (edit), как часть того, что вы пробовали. Можете ли вы сделать это соединение PowerQuery?   -  person Mathieu Guindon    schedule 26.04.2019
comment
Я включил это в свой первоначальный вопрос. У меня есть объект списка со свойствами карты XML.   -  person Dracius    schedule 26.04.2019
comment
Я мог бы попробовать использовать PowerQuery; означает ли это, что невозможно обновить URL-адрес, прикрепленный к XMLMap? Попытка прочитать эту документацию atm.   -  person Dracius    schedule 26.04.2019


Ответы (1)


Я нашел здесь рабочее решение: https://www.mrexcel.com/forum/excel-questions/750075-vba-update-connection-path-xml-data.html

Окончательный рабочий код:

Sub RefreshXML_Click()
Dim GetProjects As String: GetProjects = "http://api.aceproject.com/?fct=getprojects&guid=" & Cerberus.GUID & "&Filtercompletedproject=False&projecttemplate=0&assignedonly=True&format=xml"
With Sheets("GetProjects").ListObjects("Table1").XmlMap.DataBinding
    .ClearSettings
    .LoadSettings GetProjects
    .Refresh
End With
End Sub

Решение состояло в том, чтобы очистить, а затем перезагрузить DataBinding, поскольку это поле доступно только для чтения и не может быть отредактировано. Все остальные решения сосредоточены на попытке изменить таблицу запросов (которая не будет существовать при использовании мастера импорта).

person Dracius    schedule 29.04.2019