VBA入門
第118回.ファイル操作Ⅱ(Print #)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-07-23

第118回.ファイル操作Ⅱ(Print #)


VBAでファイル(CSV等)を扱う時は、
最初に、ファイルを開き、
次に、読込書込みを行い、
最後に、ファイルを閉じます。


ファイルを書き込む時には、Print # ステートメントを使います。

Print # ステートメント

シーケンシャル出力モード (Output または Append) で開いたファイルにデータを書き込むファイル入出力ステートメントです。
Print #filenumber, [outputlist]



filenumber 必ず指定します。
任意のファイル番号を指定します。
OpenステートメントやCloseステートメントで指定するファイル番号と一致させます。
outputlist 省略可能です。
出力する式や数式または文字列式を指定します。
[{Spc(n) | Tab[(n)]}] [expression] [charpos]
Spc(n) 出力するデータに n 個のスペースを挿入します。
Tab(n) expression の出力位置を n 番目の桁位置に移動します。
Tab 関数の引数 n に何も指定しない場合は、出力位置は次の印字領域の先頭になります。
expression 出力する数式または文字列式を指定します。
charpos 次の文字の出力位置を指定します。
セミコロン (;) を指定すると、次の文字は最後の文字の直後から出力されます。
Tab(n) 関数で出力位置の桁番号を指定できます。
Tab 関数の引数 n に何も指定しないと、出力位置は次の印字領域の先頭になります。
引数 charpos を省略すると、次の文字は次の行の先頭から出力されます。

引数 outputlist を省略し引数 filenumber の後ろに区切り記号だけを指定すると、ファイルに空白行を出力します。
ブール型 (Boolean) のデータは、True または False という文字列で出力されます。
日付型 (Date) のデータは、コントロール パネルで設定した短い形式で書き込まれます。

Print # ステートメントの使用例



Sub sample()
  Dim i As Long
  Dim FileNumber
  FileNumber = FreeFile
  Open "C:\TEST.txt" For Output As #FileNumber
  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    Print #FileNumber, Cells(i, 1)
  Next
  Close #FileNumber
End Sub

上記では、ワークシートのA列のデータを、
テキストファイル"C:\TEST.txt"に書き出しています。

ファイルが一つだけなので、#FileNumber#1と固定数値で指定しても構いませんが、
このVBAサンプルのように、FreeFile関数を使用して次に使用可能なファイル番号を取得するようにした方がより安全です。

以下も参考にしてください。
CSVの読み込み方法
エクセルのVBAでのCSVの読込方法としては。・テキストファイルとして読み込む ・ワークブックとして読み込む ・クエリーテーブルを使う ・ADOを使う ・PowerQueryを使う 大別するとこのようになります。この記事を書いた当初は、エクセルのVBAでCSVの読み込みについてネットで検索したところ、



同じテーマ「マクロVBA入門」の記事

第115回.Split関数
第116回.ファイル操作Ⅱ(OpenとClose)
第117回.ファイル操作Ⅱ(Line Input #)
第118回.ファイル操作Ⅱ(Print #)
第119回.ファイルシステムオブジェクト(FileSystemObject)
第120回.OnTimeメソッド
第121回.SendKeysメソッドとAppActivateステートメント
第122回.Shell関数
第123回.APIについて(Win32API)
第124回.Workbookのイベントプロシージャー
第125回.Worksheetのイベントプロシージャー


新着記事NEW ・・・新着記事一覧を見る

Variantの数値型と文字列型の比較|エクセル雑感(7月1日)
VBAのVariant型について|VBA技術解説(6月30日)
VBAのString型の最大文字数について|エクセル雑感(6月20日)
VBAで表やグラフをPowerPointへ貼り付ける|VBAサンプル集(6月19日)
アクティブシート以外の表示(Window)に関する設定|VBA技術解説(6月17日)
マクロ記録での色のマイナス数値について|エクセル雑感(6月16日)
ツイッター投稿用に文字数と特定文字で区切る|エクセル雑感(6月15日)
日付の謎:IsDateとCDate|エクセル雑感(6月14日)
IFステートメントの判定|エクセル雑感(6月13日)
インクリメンタルサーチの実装|ユーザーフォーム入門(6月12日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ