Исправлено сообщение о том, что запрос уже существует, затем появляется сообщение об ошибке приложения или объекта - PullRequest
0 голосов
/ 08 апреля 2019

С помощью устройства записи макросов я записывал текст в столбцы из текстового файла.Когда я запустил его во второй раз, я получил ошибку «Ошибка во время выполнения» -2147024809 (80070057 '): запрос с именем «wkErrFile» уже существует. Я исправляю это и получаю другую ошибку, которую ранее не получал при первом запуске.

Поэтому я добавил оператор удаления ActiveWorkbook.Queries ("wkErrFile"). Удалите в начале, чтобы код мог перейти на этап ActiveWorkbook.Queries.Add Name: = "wkErrFile", Formula: = .... Остановил запуск перед выполнением всего кода, прокомментировал первый оператор удаления для последующих запусков после добавления оператора удаления вниз непосредственно перед завершением с. Первая ошибка исчезла, но теперь я получаю эту вторую ошибку.

Sub FixHighlighterMacro()
'
' FixHighlighterMacro Macro
'

  'ActiveWorkbook.Queries("wkErrFile").Delete
    ActiveWorkbook.Queries.Add Name:="wkErrFile", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Table.FromColumns({Lines.FromBinary(File.Contents(""U:\Backup\Development\Macros\VBA\FixingH\wkErrFile.txt""), null, null, 1252)})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source"
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=wkErrFile;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [wkErrFile]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "wkErrFile"
        .Refresh BackgroundQuery:=False
        ActiveWorkbook.Queries("wkErrFile").Delete
    End With
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 2), Array(2, 2), Array(5, 2), Array(10, 1), Array(36, 2), _
        Array(37, 2), Array(38, 2), Array(39, 2), Array(40, 2), Array(41, 2), Array(42, 2), Array( _
        74, 2), Array(76, 1), Array(81, 2), Array(83, 2), Array(87, 1), Array(100, 2), Array(105, 1) _
        , Array(111, 2), Array(117, 1), Array(127, 2), Array(133, 1), Array(147, 2), Array(177, 2), _
        Array(189, 2), Array(199, 2)), TrailingMinusNumbers:=True
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
End Sub

Я ожидаю, что код будет помещен в отдельные столбцы после добавления нового листа во время каждого прогона. Ошибки не допускают последующие прогоны с момента появления первого.
1. Пожалуйста, скажите мне, как кодироватьвокруг обеих ошибок? 2. Пожалуйста, объясните, что происходит с wkErrFile в:
(a) .CommandText = Array ("SELECT * FROM [wkErrFile] ") и (b) .ListObject.DisplayName =" wkErrFile "Очень благодарно!Спасибо!

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