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

Excelマクロの基礎と応用、エクセル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 ・・・新着記事一覧を見る

Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)


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

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



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

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


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




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