これは動作します:
Sub OpenCsvAsText(ByVal strFilepath As String)
Dim intFileNo As Integer
Dim iCol As Long
Dim nCol As Long
Dim strLine As String
Dim varColumnFormat As Variant
Dim varTemp As Variant
'// Read first line of file to figure out how many columns there are
intFileNo = FreeFile()
Open strFilepath For Input As #intFileNo
Line Input #intFileNo, strLine
Close #intFileNo
varTemp = Split(strLine, ",")
nCol = UBound(varTemp) + 1
'// Prepare description of column format
ReDim varColumnFormat(0 To nCol - 1)
For iCol = 1 To nCol
varColumnFormat(iCol - 1) = Array(iCol, xlTextFormat)
' What's this? See VBA help for OpenText method (FieldInfo argument).
Next iCol
'// Open the file using the specified column formats
Workbooks.OpenText _
Filename:=strFilepath, _
DataType:=xlDelimited, _
ConsecutiveDelimiter:=False, Comma:=True, _
FieldInfo:=varColumnFormat
End Sub
使用法:
OpenCsvAsText "C:\MyDir\MyFile.txt"
コンマ区切りファイルは、すべての列がテキストとしてフォーマットされたExcelシートとして開かれます。
@Wetmelonのウィザードソリューションは正常に機能しますが、多くのファイルを開いている場合、私のように、Shiftキーを押しながらクリックするために毎回60カラムまでスクロールすることに疲れることがあります。
EDIT @GSergは、以下のコメントで、この「機能しない」および「スペースと先行ゼロを食べる」と述べています。私は質問へのコメントを引用するだけです。
理由は不明ですが、VBAのすべての列に形式を明示的に指定しても、ファイル拡張子がCSVの場合、Excelはそれを無視します。拡張機能を変更するとすぐに、同じコードで正しい結果が得られます。
したがって、上記のコードは「機能します」が、このとんでもないExcelの動作によって殺されてしまいます。どちらの方法でも、拡張子を「.csv」以外に変更する必要があります。申し訳ありません!その後、無料で家に帰ります。