Home > 即効テクニック > Excel VBA > ファイル操作関連のテクニック > 異なる区切り記号の混在したテキストファイルを読み込む

即効テクニック

ファイル操作関連のテクニック

異なる区切り記号の混在したテキストファイルを読み込む

( - )
●詳細● 
サンプルでは、“Sample.txt”というテキストファイルを読み込んでいます。
このテキストファイルは、データの区切り記号が混在していて、スペースとカンマと“#”で区切られています。
これを「Open」メソッドで開くと、一つのセルに1行分が全て入ってしまいます。
「OpenText」メソッドを使うと、区切り記号を指定することができるので、区切り記号の混在したテキストファイルをExcelブックに正しく読み込むことができます。

●準備● 
*標準モジュールを挿入しサンプルマクロを貼り付けて保存したExcelブックと同じフォルダに、データを入力した”Sample.txt”を保存してください。
“Sample.txt”には「基本操作 異なる区切り記号の混在したテキストファイルを読み込もう」と同じデータを用意します。 

●サンプル● 
Sub Sample() 
    Dim TextPath As String

    '<テキストファイルのパスを取得します。> ←(1) 
    TextPath = ActiveWorkbook.Path & "\Sample.txt" 

    '<「OpenText」メソッドを使ってテキストファイルを開きます。> ←(2) 
    Workbooks.OpenText FileName:=TextPath, _ 
                       DataType:=xlDelimited, _ 
                       comma:=True, _
                       Space:=True, _
                       other:=True, _
                       otherchar:="#" 

    '<列幅を内容に合わせて調節して見やすくします。> ←(3) 
    Columns("A:G").Select
    Columns("A:G").EntireColumn.AutoFit
    Range("A1").Select
End Sub 

●お試しマクロ● 
Sub OpenText() 
    Dim TextPath As String

    TextPath = ActiveWorkbook.Path & "\Sample.txt" 
    Workbooks.Open TextPath
    Columns("A:G").EntireColumn.AutoFit
    Range("A1").Select
End Sub 

●補足説明● 
(1)「Path」プロパティは、指定されたオブジェクトの絶対パスを示す文字列を返します。
   ここではサンプルマクロのあるExcelブックのパスを取得しています。

   パス末尾の円記号(\)とオブジェクト名は含まないので、”&”で"\Sample.txt"と連結させてStringの変数にセットします。

(2)「OpenText」メソッドは、テキストファイルを分析して読み込みます。
   テキストファイルを1枚のシートとして、それを含む新しいブックを開きます。

   <構文>
    Object.OpenText(FileName, 
                                       DataType,
                                       Comma
                                       Space
                                       Other
                                       OtherChar)

Object:対象となるWorkbooksオブジェクトを指定します。 
FileName:読み込まれるテキストファイルの名前を指定します。
DataType:ファイルに含まれるデータの形式を指定します。
         使用できる定数は、xlDelimitedまたはxlFixedWidthです。
xlDelimited:区切り記号でフィールドが区切られたテキスト形式
xlFixedWidth:固定長文字列のテキスト形式
Comma:区切り文字にカンマ (,) を使うときはTrueを指定します。
Space:区切り文字にスペースを使うときはTrueを指定します。
Other:区切り文字にOtherCharで指定した文字を使うときはTrueを指定します。 
OtherChar:引数OtherがTrueのときは、必ずこの引数に区切り文字を指定します。