그만큼Workbooks.OpenText
방법(Excel) 문서말한다:
표현.오픈텍스트(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, 탭, 세미콜론, 쉼표, 공백, 기타, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)
표현을 나타내는 변수통합 문서물체.
내 프로젝트에서 나는
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 속성에 액세스하려고 하면 Range 속성이 Sheets 개체에 속하므로 438 오류가 발생합니다.
실제로 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