【Excelマクロ(VBa)】テキストファイルに文字を書く


 テキストファイルに文字を書く(手動)


手動でテキストファイルに文字を書く場合、以下の順序で処理します。

 1.ファイルを開く(新規 or 追加書き)
 2.ファイルに文字を書き込む
 3.ファイルを閉じる

プログラムで処理をする場合も同じです。


 テキストファイルに文字を書く(Excelマクロ)


下記は追加書きのサンプルです。

Dim WriteFilePath As String 'ファイル名(フルパス)
Dim WriteFileNo As Integer 'ファイル番号

'ファイル名(フルパス)の設定
WriteFilePath = "c:\test\test.log"
'ファイル番号の取得
WriteFileNo = FreeFile

'ファイルを開く(追加書き)
Open WriteFilePath For Append As #WriteFileNo

'ファイルに文字を書き込む
Print #WriteFileNo, "1.英語:Hello World!!"
Print #WriteFileNo, "2.日本語:世界よ、こんにちは!!"
Print #WriteFileNo, "3.ドイツ語:Hallo Welt!!"

'ファイルを閉じる
Close #WriteFileNo


 ファイルを開く


Excelファイル以外のファイルを開く場合はOpenステートメントを使い、構文は下記となります。(Excelファイルを開く場合)

Open ファイル名(フルパス) For ファイルモード [Access アクセス方法] [アクセス制限] As #ファイルナンバー [Len=レコード長]

を用います。([ ]で括られた箇所は省略可能です。)
上記サンプルで項目を省略せず記述すると、下記のようになります。

Open WriteFilePath For Append Access Write Lock Write As #WriteFileNo

それぞれの項目の値は下記のように指定します。

項目
ファイル名
(フルパス)
必須項目c:\~のようにドライブ名を含めて指定します
ファイルモード 必須項目で、下記いずれかを指定します。
 Input:読み込みモード
 Output:新規書き込みモード
 Append:追加書きモード
 Binary:バイナリモード
 Random:ランダムモード
アクセス方法 省略可能で、指定する場合、下記いずれかを指定します。
 Read:読み込み専用
 Write:書き込み専用
 ReadWrite:読み書き用
ファイルモードでInputを指定しているのにアクセス方法でWriteを指定すると構文エラーとなりますので、特段の意図が無ければ省略するのが良いかと思います(管理人は常に省略してます)。
アクセス制限 省略可能で、処理中に他のプロセスから該当のファイルをロックしたい場合に下記いずれかを指定します。
 Shared:制限無し
 Lock Read:読み込み制限
 Lock Write:書き込み制限
 Lock Read Write:読み書き制限
ファイル
ナンバー
必須項目で、1~511までの数値を指定します。既に使われている番号を指定するとエラーとなるため、FreeFileで取得する事が望ましく、取得したらすぐにファイルを開きましょう。
レコード長 省略可能で、ランダムアクセス用に開かれたファイルで使用し、バッファリングされる文字数で使用するらしいですが、管理人はランダムアクセス自体使ったことがありません。


 ファイルに文字を書き込む


ファイルに文字を書き込む場合はPrintステートメントを使い、構文は下記となります。

Print #ファイルナンバー, 書き込む内容(文字列・数値等 特に意識しません)


 ファイルを閉じる


ファイルを閉じる場合はCloseステートメントを使い、構文は下記となります。

Close #ファイルナンバー

ファイルナンバーを指定しないと、Openステートメントで開いた全てのファイルが閉じます。



管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: VBa(Excelマクロ), システム開発 パーマリンク

コメントを残す