OpenText в текущей рабочей книге

OpenText в текущей рабочей книге

TheWorkbooks.OpenTextдокументация по методу (Excel)говорит:

выражение.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Точка с запятой, Запятая, Пробел, Другое, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Локальный)

выражениеПеременная, представляющаяРабочие тетрадиобъект.

В своем проекте я использую

fPath = "C:\CSV Files\" & FName
Workbooks.OpenText Filename:=fPath, Local:=True

Это создает дополнительную рабочую книгу. Я хочу, чтобы код создавал новую электронную таблицу в существующей рабочей книге. Я пробовал этот код

fPath = "C:\CSV Files\" & FName
ActiveWorkbook.OpenText Filename:=fPath, Local:=True

Это приводит к ошибке выполнения 438.Эта темаговорит:

Когда вы пытаетесь использовать метод/свойство, которое не принадлежит объекту. Например, если у вас есть объект Workbook и вы пытаетесь получить доступ к свойству Range, вы получите ошибку 438, поскольку свойство Range принадлежит объекту Sheets.

На самом деле я использую Excel 2020, но понятия не имею, что является причиной ошибки.

Кто-нибудь может меня поправить?

решение1

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

Попробуйте что-то вроде этого:

set OriginalWB = ActiveWorkbook
fPath = "C:\CSV Files\" & FName
Workbooks.OpenText Filename:=fPath, Local:=True
set newWB = ActiveWorkbook
ActiveSheet.Copy after:= OriginalWB.worksheets(1)
newWB.Close

решение2

Чтобы открыть текстовый файл в той же книге, можно использовать AddQueryTablesметодИмпортироватьфайл, или вы можете использовать PowerQuery

Это код, который был сгенерирован макрорекордером.

    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\xxxx\xxxx\tester.csv", Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "tester"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

Связанный контент