VBA入門
第116回.ファイル操作Ⅱ(OpenとClose)

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

第116回.ファイル操作Ⅱ(OpenとClose)


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


ファイルを開くには、Openステートメントを使います、
ファイルを閉じるには、Closeステートメントを使います。
今回はこのOpenステートメントとCloseステートメントを解説します。

Openステートメント

ファイルを開いて、ファイルへの入出力ができるようにします。
入出力処理を行うときには、その対象となるファイルを開く必要があります。
Open ステートメントはファイルに入出力のためのバッファを割り当て、
バッファに対するアクセス モードを決定します。

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

pathname

必ず指定します。
文字列式にはファイル名を指定します。
フォルダ名、またはドライブ名も含めて指定できます。

mode

必ず指定します。
ファイル モードを示す、次のいずれかのキーワードを指定します。
Append、Binary、Input、Output、または Random
省略すると、ファイルはランダム アクセス モードで開かれます。

Access

省略可能です。
開くファイルに対して行う処理を示す、次のいずれかのキーワードを指定します。
Read、Write、または Read Write。

lock

省略可能です。
開くファイルに対する、他のプロセスからのアクセスを制御する、次のいずれかのキーワードを指定します。
Shared、Lock Read、Lock Write、または Lock Read Write。

filenumber

必ず指定します。
1~511の範囲で任意のファイル番号を指定します。
扱うファイルが少ない場合は、この番号を固定数値で指定しても構いませんが、
FreeFile 関数を使用して次に使用可能なファイル番号を取得するようにした方がより安全です。

reclength

省略可能です。
32,767 バイト以下の数値を指定します。
ランダム アクセス ファイルの場合は、レコード長を表します。
シーケンシャル ファイルの場合は、バッファの容量を表します。




modeについて
Append:追加モード(既存データの後ろに追加される)
Binary:バイナリモード
Input:シーケンシャル入力モード(先頭から順に読み込みます)
Output:シーケンシャル出力モード(先頭から順に書き込みます)
Random:ランダムアクセスモード
Append、Binary、Output、または Random モードでファイルを開くと、そのファイルが作成されます。
マクロVBA入門では主に、Input、Outputについて取り上げます。
FreeFile関数
使用可能なファイル番号を整数型 (Integer) の値で返すファイル入出力関数です。
FreeFile関数|VBA入門
FreeFile関数は、使用可能なファイル番号を整数型(Integer)の値で返します。FreeFile関数 FreeFile[(rangenumber)] rangenumber ファイル番号の範囲をバリアント型(Variant)で指定します。

Closeステートメント

Open ステートメントで開いたファイルへの入出力を終了して、ファイルを閉じるファイル入出力ステートメントです。
Close [filenumberlist]
引数 filenumberlist には、任意のファイル番号を 1 つまたは複数指定します。
引数 filenumberlist を省略すると、Open ステートメントで開いたすべてのファイルが閉じられます。

OpenステートメントとCloseステートメントの使用例

OpenステートメントもCloseステートメントも、単体で使われることはありません。
次回以降の、Line Input # ステートメントや、Print # ステートメントとともに使用されます。
VBAサンプルコードは、これらとともに次回以降に記載します。

今回は、OpenステートメントとCloseステートメントの構文だけ確認しておいてください。
Append、Binary、Input、Output、または Random
これらの違いを理解しておけば良いでしょう。

第117回.ファイル操作Ⅱ(Line Input #)
VBAでファイル(CSV等)を扱う時は、最初に、ファイルを開き、次に、読込書込みを行い、最後に、ファイルを閉じます。ファイルを読み込む時には、LineInput#ステートメントを使います。LineInput#ステートメント シーケンシャル入力モード(Input)で開いたファイルから行全体を読み込み、
第118回.ファイル操作Ⅱ(Print #)
VBAでファイル(CSV等)を扱う時は、最初に、ファイルを開き、次に、読込書込みを行い、最後に、ファイルを閉じます。ファイルを書き込む時には、Print#ステートメントを使います。Print#ステートメント シーケンシャル出力モード(OutputまたはAppend)で開いたファイルにデータを書き込むファイル入出力ステートメントです。

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



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

第113回.配列に関連する関数
第114回.セル範囲⇔配列(マクロVBA高速化必須テクニック)
第115回.Split関数
第116回.ファイル操作Ⅱ(OpenとClose)
第117回.ファイル操作Ⅱ(Line Input #)
第118回.ファイル操作Ⅱ(Print #)
第119回.ファイルシステムオブジェクト(FileSystemObject)
第120回.OnTimeメソッド
第121回.SendKeysメソッドとAppActivateステートメント
第122回.Shell関数
第123回.APIについて(Win32API)


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

タプル(tuple型、イミュータブル)|Python入門(9月15日)
リスト(list型、配列)|Python入門(9月14日)
文字列操作(str型)|Python入門(9月13日)
greeenはgreenに、greeeeeNをGReeeeNに変換|エクセル雑感(9月13日)
while文とデバッグ(ステップイン)|Python入門(9月12日)
入力規則で○△を入れる数を制限する方法|エクセル雑感(9月12日)
コレクションの要素を削除する場合|エクセル雑感(9月11日)
for文とイテラブルオブジェクト|Python入門(9月10日)
if文とインデントによるブロック|Python入門(9月9日)
ショートカット(Ctrl+Shift+n)抜け番ばどれだ|エクセル雑感(9月8日)


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

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」をお願いいたします。
本文下部へ