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

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

第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) の値で返すファイル入出力関数です。

Closeステートメント

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

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

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

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

以下も参考にしてください。
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 ・・・新着記事一覧を見る

トランザクション処理|SQL入門(12月11日)
インデックスを作成して高速化(CREATE INDEX)|SQL入門(12月9日)
他のテーブルのデータで追加/更新/削除|SQL入門(12月8日)
データの削除(DELETE)|SQL入門(12月7日)
データの更新(UPDATE)|SQL入門(12月6日)
複数のSELECT結果を統合(UNION,UNION ALL)|SQL入門(12月5日)
テーブルを結合して取得(INNER JOIN,OUTER JOIN)|SQL入門(12月4日)
データベースの正規化とマスタの作成|SQL入門(12月3日)
データベースにおけるNULLの扱い方|SQL入門(12月2日)
オブジェクト変数とは何か|VBA技術解説(12月2日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • ファイル操作Ⅱ(OpenとClose)

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


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



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