下記のVBAコードを使用してExcelでcsvファイルを開きます(このコードはData \ Text to Columnsコマンドをシミュレートしています)。コードでは、プロパティTextFileColumnDataTypesの配列を指定する必要があります。これは、csvファイルの各列に対してデータ形式(2 =テキスト形式)を指定します。TextFileColumnDataTypesを使用して、各列に対して正しいデータ形式のCSVファイルを開きますか?
しかし、csvファイルに含まれる列の数がわからないので、csvファイルのすべての列にフォーマット2(=テキスト形式)を指定したいと思います。今のところ問題は、固定数の列(3列以下の例では)のデータ形式のみを指定できることです。
その問題を解決するためにすべてのヘルプは高く評価される:)
=============================== ================
ここで私が使用しています完全なコードされています
With ThisWorkbook.Worksheets(1).QueryTables.Add(Connection:= _
"TEXT;C:\test.csv", Destination _
:=ThisWorkbook.Worksheets(1).Range("$A$1"))
.name = "Query Table from Csv"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete
End With
詳細な説明のためのThx! 2番目の解決策に関しては、私が見る限り、基本的にはコンマと千単位区切りに関する2行を削除し、プロパティTextFilePlatformを1252に変更しました。しかし、このコードは私のためには機能しませんでした。例えば。 「03/08/2012」を日付に変換します。最初の解決策に関しては、列の数を読み出すことは正式に機能します。そのコードをありがとう!しかし、TextFileColumnDataTypesプロパティに格納された情報にデータを埋め込んでより固定長の配列を与えるより自然な解決策があるのだろうかと疑問に思った。 – tyrex