ねぇもりさん、Excelのデータをタブ区切りのテキストファイルにしたいんだよね
もり
「名前を付けて保存」でファイルの種類を「テキスト」にする作業のことかな?
そうそう、この作業。ポチポチするのめんどうくさいよね
もり
よーし!じゃあマクロを作っちゃおう!
Excelブック内の「アクティブシート」を「タブ区切りのテキストファイル」で出力するマクロの紹介です。
スポンサーリンク
アクティブシートからテキストファイルを作る
「アクティブシート」とは、選択されている(最前面に表示されている)シートのことです。
下記のコードを標準モジュールに貼り付けて実行します。
- テキスト化されるシート:アクティブシート
- 出力先:Excelブックと同じパス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Option Explicit Sub exportTXT() Application.ScreenUpdating = False Dim shName As String shName = ThisWorkbook.ActiveSheet.Name 'アクティブシートを空の新規ブックにコピーする ThisWorkbook.ActiveSheet.Copy '新規ブックをテキスト形式で保存 Dim wb As Workbook Set wb = ActiveWorkbook wb.SaveAs _ Filename:=ThisWorkbook.Path & "\" & shName & ".txt", _ FileFormat:=xlText '新規ブックは不要なので保存しないで閉じる wb.Close SaveChanges:=False End Sub |
このマクロを実行すると、Excelブックと同じフォルダにテキストファイルが出力されます。
「data」シートから data.txt ができあがります。
【ポイント】作成対象のシートを新規ブックにコピーする
この処理、シートをわざわざ新規ブックにコピーしてるよね。
なんでシートを直接テキスト形式で保存してないの?
下記の3ステップでテキストファイルを作成しています。
- アクティブシートを空の新規ブック(Book1)にコピー
- 新規ブック(Book1)をテキスト形式で保存
- 新規ブック(Book1)を破棄(保存しないで閉じる)
Excelブックのシートを「名前を付けて保存」でテキスト形式で保存すると、元のExcelのファイル名がtxt形式になってしまうんです。
もり
Application.ScreenUpdating = False で画面更新を止めてるから、見た目では気づかないね!
ブック内の全シートをテキストファイルにする
こちらの記事で紹介しています!あわせてご覧ください!
【ExcelVBA】エクセルブックの全シートからCSV(テキスト)ファイルを一括出力するExcelブックのシートからCSVファイル・タブ区切りのテキストファイルを一括作成するマクロツールを紹介しています。...
スポンサーリンク
スポンサーリンク