Возникла проблема при попытке удалить код выбора в таблице запросов. - PullRequest
0 голосов
/ 20 февраля 2019

Я успешно подключился к текстовому файлу согласно заданному коду, используя опыт Get & Transform (Power Query) в Excel для подключения к текстовым файлам.Следующий базовый текстовый файл - Axis1.txt, который периодически меняется.Затем я пошел, чтобы обновить таблицу запросов с последними данными.Я ссылался на следующие ссылки, чтобы узнать об обновлении таблиц запросов

Как ссылаться и обновлять QueryTable в Excel 2016 в VBA

Excel VBA / Обновить данные из определенного источникабез диалога

https://docs.microsoft.com/en-us/office/vba/api/excel.querytable.refresh

Теперь моя проблема .

Из всех перечисленных методов я смог добиться успеха в обновлении таблицы с последними данными, когда выбрана одна из ячеек таблицы запросов и задана следующая команда.

Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

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

Sub reresh1()
'Sheet2.ListObject.QueryTable.Refresh BackgroundQuery:=False

errorl2

  'Sheets("Sheet2").QueryTables.Refresh BackgroundQuery:=False

errorl3

  Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
   'WORKS FINE

   End Sub

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

Sub TblImpV1()
' Macro1 Macro
    ActiveWorkbook.Queries.Add Name:="axis1", Formula:= _but 
        "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""C:\mydirb\axis1.txt""),[Delimiter=""    "", Columns=11, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Changed Type"" = Table.TransformColumnTypes(Source,{{""Column1"", Int64.Type}, {""Column2"", type date}, {""Column3"", type text}, {""Column4"", type text}, {""Column5"", type text}, {""Column6"", type number}, {""C" & _
        "olumn7"", type number}, {""Column8"", type text}, {""Column9"", type text}, {""Column10"", type text}, {""Column11"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Changed Type"""
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=axis1;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [axis1]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "axis1"
        .Refresh BackgroundQuery:=False
    End With
    Range("B4").Select
End Sub

Я хочу избежать выбора.Хотя процедура предлагает перейти к таблице запросов любой ячейки и нажать кнопку обновления.Я считаю, что сообщения SO Experts по смежным вопросам должны быть правильными, и я делаю что-то глупое из-за моих элементарных знаний VBA Coding.Любая помощь или руководство в этом вопросе приветствуется.Был бы признателен за полный связанный синтаксис вместо одной строки.

РЕДАКТИРОВАТЬ

Я мог бы найти решение, чтобы избежать выбора.Следующая строка кода работает нормально, если B2 является ячейкой в ​​таблице запросов.

Sheets("Sheet2").Range("B2").ListObject.QueryTable.Refresh BackgroundQuery:=False

Однако, если у кого-то есть лучшее решение, это приветствуется.

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