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