Как изменить параметр в Power Query без преобразования значения в формулу?

Я следовал инструкциям в этой теме:

Как изменить параметры Excel Power Query с помощью VBA

в котором приведен следующий код для изменения параметра Power Query:

ThisWorkbook.Queries([ParameterName]).Formula = 'New code here

Однако он преобразует значение в формулу и добавляет перед ней «=»:

Как изменить параметр в Power Query без преобразования значения в формулу?

Мне нужно обновить источник моего запроса, потому что срок действия GUID истекает и его необходимо обновить.

    Source = Xml.Tables(Web.Contents("http://api.aceproject.com/?fct=getprojects&guid = " & GUID & "&Filtercompletedproject=False&projecttemplate=0&assignedonly=True")),

Единственные решения, которые я могу найти, требуют использования значения, хранящегося в ячейке, но я хочу избежать хранения GUID в ячейке по соображениям безопасности.

Используя VBA, как я могу изменить либо только значение параметра (без преобразования в формулу), либо весь исходный URL-адрес?

«Я хочу избежать хранения GUID в ячейке по соображениям безопасности» — если этот GUID находится в коде VBA, это небезопасно. Кроме того, этот GUID отправляется по HTTP как часть URL-адреса, что не является безопасным. С этим идентификатором GUID нет серьезных проблем с безопасностью, он уже общедоступен.

Mathieu Guindon 08.05.2019 19:34

Я понимаю это, но я просто ищу «более безопасный», чем хранить его в виде простого текста в ячейке, которую легко увидеть. У меня есть сценарий входа в систему, который обновляет значение GUID при открытии файла, которое автоматически очищается при закрытии файла. Это гарантирует, что следующий пользователь, открывающий файл, не получит доступ к GUID предыдущего пользователя. Это не тема моего вопроса, поэтому я объясню свои доводы в пользу того, что НЕ хочу, чтобы GUID, хранящийся в ячейке, помог вам ответить на мой вопрос, или вы просто придираетесь?

Dracius 08.05.2019 19:38

Откуда вы получаете GUID, который вам нужно передать?

Alexis Olson 08.05.2019 19:39

Я получаю GUID из API через функцию входа в систему, а затем сохраняю его как переменную класса. Я могу легко манипулировать GUID, проблема заключается в том, чтобы передать его источнику Power Query.

Dracius 08.05.2019 19:46
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
4
848
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение заключалось в использовании двойных кавычек для принудительного ввода текстового значения в формулу:

ThisWorkbook.Queries("GUID").Formula = """dogs"""

Вот окончательная версия, в которой переменная передается как текст:

Sub RefreshQuery_Click()
    ThisWorkbook.Queries("GUID").Formula = """" & GUID & """"
End Sub

Чтобы убедиться, что запрос сохраняет свойство параметра, добавьте следующие метаданные:

    ThisWorkbook.Queries("GUID").Formula = """" & GUID & """" & " meta [IsParameterQuery=true, Type = ""Text"", IsParameterQueryRequired=true]"

Другие вопросы по теме