Excelのデータを他のシステムにインポートする際など、特定の範囲を「タブ区切り」のテキストファイル(.txt)形式で出力したいというニーズは少なくありません。
毎回手作業でコピーして、メモ帳に貼り付けて保存…といった作業は、手間がかかる上にミスも発生しやすくなります。
この記事では、Excel VBAマクロを使い、シート上の指定した範囲を簡単な操作でテキストファイルとしてエクスポートする方法を、コードの解説付きで丁寧にご紹介します。
完成したVBAコード
まずは完成したコードです。このVBAコードを標準モジュールにコピー&ペーストすれば、すぐに試すことができます。
Sub ExportRangeToTextFile()
' 変数を宣言します
Dim exportArea As Range
Dim tempWb As Workbook
' --- 設定箇所 ここから ---
' テキストに出力したいセル範囲を指定します
' この例では「データシート」という名前のシートの、C3からJ15の範囲を指定しています
Set exportArea = ThisWorkbook.Worksheets("データシート").Range("C3:J15")
' --- 設定箇所 ここまで ---
' エラーが発生しても処理を続ける準備
On Error Resume Next
' 指定したシートが存在するか確認
If exportArea Is Nothing Then
MsgBox "指定されたシートまたは範囲が見つかりません。" & vbCrLf & _
"コード内のシート名やセル範囲を確認してください。", vbExclamation
Exit Sub
End If
' エラー処理を元に戻す
On Error GoTo 0
' 新しいワークブックを一時的に追加します
Set tempWb = Workbooks.Add
' 指定した範囲を、新しいワークブックの最初のシートのA1セルにコピーします
exportArea.Copy tempWb.Worksheets(1).Range("A1")
' 新しいワークブックをタブ区切りのテキスト形式で保存します
' ファイル名は「ExportedData.txt」とし、マクロを実行したExcelファイルと同じフォルダに保存されます
tempWb.SaveAs ThisWorkbook.Path & "\ExportedData.txt", FileFormat:=xlText
' 保存した一時的なワークブックを、変更を保存せずに閉じます
tempWb.Close SaveChanges:=False
' 完了メッセージを表示します
MsgBox "テキストファイルへの書き出しが完了しました。"
End Sub
コードの詳しい解説
上記コードがどのような処理を行っているのか、ステップごとに見ていきましょう。
変数の宣言
Dim exportArea As Range
Dim tempWb As Workbook
はじめに、マクロ内で使用する「変数」(データを入れておく箱)を用意します。
- exportArea: 書き出したいセル範囲の情報を格納するための変数です。
- tempWb: テキストファイルとして保存するための一時的なワークブック情報を格納するための変数です。
出力範囲の指定
Set exportArea = ThisWorkbook.Worksheets("データシート").Range("C3:J15")
ここで、テキストファイルとして出力したいデータの範囲を具体的に指定します。サンプルコードでは**「データシート」という名前のシートの、C3セルからJ15セルの範囲**を指定しています。
ご自身のExcelファイルに合わせて、"データシート"の部分や"C3:J15"の部分を自由に変更してください。
一時的なブックへのコピー
Set tempWb = Workbooks.Add
exportArea.Copy tempWb.Worksheets(1).Range("A1")
指定した範囲のデータだけを正確にファイル出力するため、まずWorkbooks.Addで新しい空のワークブックを作成します。そして、exportArea.Copyを使い、指定したセル範囲のデータをその新しいブックに丸ごとコピーしています。
テキスト形式で保存
tempWb.SaveAs ThisWorkbook.Path & "\ExportedData.txt", FileFormat:=xlText
この行が、ファイル保存処理の心臓部です。SaveAsメソッドを使って、先ほどデータをコピーした一時的なブックを保存します。
ThisWorkbook.Path & "\ExportedData.txt"ThisWorkbook.Pathで、このVBAマクロが書かれているExcelファイルが保存されているフォルダの場所を取得し、そこに「ExportedData.txt」というファイル名で保存するよう指定しています。ファイル名は自由に変更可能です。FileFormat:=xlTextこれが最も重要な引数です。保存形式としてxlTextを指定することで、**各セルの値がタブで区切られたテキストファイル(タブ区切りテキスト)**として保存されます。
後処理
tempWb.Close SaveChanges:=False
MsgBox "テキストファイルへの書き出しが完了しました。"
テキストファイルの作成が終わったので、作業用に開いていた一時的なブック(tempWb)は不要になります。Closeメソッドで閉じますが、その際にSaveChanges:=Falseとすることで、保存確認のダイアログを表示させずに静かに閉じることができます。
最後に完了メッセージを表示して、一連の処理は終了です。
カスタマイズのポイント
このマクロをご自身の業務で使うには、主にコードの上部にある「設定箇所」を書き換えるだけで対応できます。
- シート名:
ThisWorkbook.Worksheets("データシート")の"データシート"の部分を、実際のシート名に変更します。 - セル範囲:
.Range("C3:J15")の"C3:J15"の部分を、書き出したいセル範囲のアドレスに変更します。 - ファイル名:
"\ExportedData.txt"の"ExportedData.txt"の部分を、お好きな出力ファイル名に変更します。
まとめ
今回は、VBAを使ってExcelの特定範囲をタブ区切りのテキストファイルとして書き出す方法をご紹介しました。
このマクロを一度設定しておけば、ボタン一つで定型的なファイル出力作業が完了するため、手作業によるミスをなくし、業務時間を大幅に短縮できます。ぜひご活用ください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
