ExcelのVBAでテキストファイルを出力する方法

Pocket

ExcelのVBAでテキストファイルを出力する方法を考える。


目次


一つずつ処理する方法

次はアクティブシートのセルA1からA10の内容を「出力結果.txt」というテキストファイルに出力する場合のコードである。
この例ではセルの中身を単純にそのまま書き出しているが、実際には何らかの変換を施して使うのであろう。

Sub テキストとして出力()
  fnsave = "出力結果.txt"
  numff = FreeFile
  Open fnsave For Output As #numff
  For i = 1 To 10
    temp = Cells(i, 1)
    Print #numff, temp
  Next i
  Close #numff
End Sub

一気に処理する方法

次のコードは出力する内容を変数にため込み、一気に書き込む方法である。
セルの順番を入れ替えたり、セル同士を結合したり、上の例より柔軟に処理ができるかもしれない。
ただし、上と違って、自動的に改行が入らないことに注意する。もし改行を入れるならば「temp = temp & Cells(i, 1)」のところを「temp = temp & Cells(i, 1) & Chr(13)」と書くとよい。

Sub テキストとして出力2()
  fnsave = "出力結果.txt"
  numff = FreeFile
  Open fnsave For Output As #numff
  temp = ""
  For i = 1 To 10
    temp = temp & Cells(i, 1)
  Next i
  Print #numff, temp
  Close #numff
End Sub

保存場所を選択する方法

ファイル名を変えたり、保存場所を変えたりしたい場合には、1行目の代わりに次のように書くとよい。

fnsave = Application.GetSaveAsFilename("出力結果.txt", "テキスト(*.txt),*.txt")
If fnsave = False Then Exit Sub

まとめ

2021年3月4日追記
最もシンプルな方法は次のとおりです。

Sub テキストファイルを保存()
  'カレントディレクトリをこのファイルのあるディレクトリに変更
  ChDir Application.ThisWorkbook.Path
  'ファイル名
  my_filename = "sample.txt"
  'ファイルの内容
  my_text = "この文字列を保存します。"
  num_freefile = FreeFile
  Open my_filename For Output As #num_freefile
  Print #num_freefile, my_text
  Close #num_freefile
End Sub

[ 2010年2月12日 | カテゴリー: Excel | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報