Макрос Excel обновляет данные, затем форматирует ячейки - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть лист, который содержит сводную таблицу, данные заполняются из файла, выводимого другой системой.

В Power Query я преобразую данные, в частности, я использую одно из полей для создания URL.

"'=HYPERLINK(""" & "https://website.com/"&[Code] & """, """ & [Code] & """) "

Когда данные находятся в сводной таблице, мне нужно манипулировать форматированием, чтобы они правильно отображались.

В Excel я использую поиск и замену для преобразования строкив правильный URL, показывающий понятное имя (и я изменяю размер столбца).

Sub Macro1()
    Cells.Replace What:="'=", Replacement:="=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Columns("A:A").EntireColumn.AutoFit
End Sub

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

Я стремился автоматизировать это дляпользователи.Однако при запуске следующего макроса сначала выполняется форматирование, а затем обновление, что я делаю неправильно?

Sub Macro2()
    ActiveWorkbook.Connections("Query - XXX"). _
        Refresh
'
    Cells.Replace What:="'=", Replacement:="=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Columns("A:A").EntireColumn.AutoFit
End Sub

ПРИМЕЧАНИЕ две части макроса работают правильно независимо друг от друга, но только нев сочетании, как указано выше.

1 Ответ

0 голосов
/ 01 февраля 2019

Если вы найдете запрос в разделах «Соединения» на ленте данных, откроете его свойства и снимите флажок «Фоновое обновление», он будет приостанавливать любой код VBA, пока не завершит обновление.Это свойство также можно установить в VBA.

Sub Macro2()

    ActiveWorkbook.Connections("Query - XXX").OLEDBConnection.BackgroundQuery = False
    ActiveWorkbook.Connections("Query - XXX").Refresh

    Cells.Replace What:="'=", Replacement:="=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Columns("A:A").EntireColumn.AutoFit
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...