のWorkbooks.OpenText
メソッド(Excel)ドキュメント言う:
表現。オープンテキスト(ファイル名、原点、開始行、データ型、テキスト修飾子、連続区切り、タブ、セミコロン、カンマ、スペース、その他、その他の文字、フィールド情報、テキストビジュアルレイアウト、小数点区切り、千単位区切り、末尾のマイナス数値、ローカル)
表現を表す変数ワークブック物体。
私のプロジェクトでは
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