GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBAを極める−VBAスーパーテクニック
  VBAステートメントでファイル操作をしてみよう!1
 
■ VBAステートメントによるファイル操作1

以前、FileSysytemObject(FSO)を使用したファイル操作方法について解説しました。
エクセルからファイルを操作してみよう!1,2,3

FileSysytemObjectは、非常に強力なファイル操作のメソッド・プロパティを提供するオブジェクトですが、VBAの中にも、ファイル操作を行うためのステートメントが用意されています。

今回は、より手軽にファイル操作を行うためのVBAステートメントについて解説してみたいと思います。

ファイル関連の操作

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のいずれかのキーワードを指定します。省略可能です。
・引数filenameには、1〜511の範囲で任意のファイル番号を指定します。1〜255のファイル番号を割り当てると、そのファイルは他のアプリケーションからアクセスできません。256〜511のファイル番号を割り当てた場合、他のアプリケーションからもアクセスできます。
・引数reclengthには、32,767バイト以下の数値を指定します。ランダムアクセスファイルではレコード長を表し、シーケンシャルファイルではバッファ容量を表します。省略可能です。

※引数pathnameに指定したファイルが存在しないとき、引数modeにAppend、Binary、Output、Randomを指定した場合は、新しいファイルが作成されます。
※引数modeにBinary、Input、Randomを指定した場合、ファイルを開いたまま、別のファイル番号で同時に開くことができます。Append、Outputを指定した場合は、いったんファイルを閉じないと別のファイル番号で開くことはできません。

(例)
  Sub test()
    Open "C:\Users\test.txt" For Output As #1
      Write #1, Range("A1")
    Close #1
  End Sub
上の例では、C:\Usersフォルダにあるtest.txtをOutputモードで開き、A1セルの内容を出力し閉じています。

Closeステートメント
Close [filenumberlist]

ファイルを閉じます。引数filenumberlistには、閉じるファイル番号を指定します。カンマで区切ることで、複数のファイル番号を同時に指定できます。省略すると現在開いているすべてのファイルを閉じます。

Lock、UnLockステートメント
Lock [#]filenumber[,recordrange]
UnLock [#]filenumber[,recordrange]

Lockステートメントは他プロセスからのアクセスをロックします、UnLockステートメントでロックを解除します。
引数filenumberには、ロックまたはロックを解除するファイル番号を指定します。
引数recordrangeには、ロックまたはロックを解除するレコード番号を指定します。省略可能です。

Input #ステートメント
Input #filenumber,varlist

Inputモードで開いたファイルからデータを読み込んで変数に格納します。引数filenumberには、任意のファイル番号を指定します。引数varlistには、データを読み込む変数を指定します。カンマで区切ることで、複数の変数を指定できます。

Write #ステートメント
Write #filenumber,[outputlist]

Output、Appendモードで開いたファイルにデータを書き込みます。出力したデータはカンマで区切られ、文字列は""で囲まれます。引数filenumberには、任意のファイル番号を指定します。引数outputlistには、出力するデータをカンマで区切って指定します。省略可能です。

(例)
  Sub test()
    Dim tmp1 As String
    Dim tmp2 As String
    Open "C:\Users\test.txt" For Input As #1
    Open "C:\Users\test2.txt" For Output As #2
      Input #1, tmp1, tmp2
      Write #2, tmp1 & tmp2
    Close #2
    Close #1
  End Sub
上の例では、C:\Usersフォルダにあるtest.txtの内容を同じフォルダのtest2.txtに出力しています。test.txtの内容が、"Microsoft","Excel"だった場合、test2.txtには、"MicrosoftExcel"が出力されます。

Line Input #ステートメント
Line Input #filenumber,varname

Inputモードで開いたファイルから行単位で読み込み、変数に代入します。引数filenumberには、任意のファイル番号を、引数varnameには、データを読み込む変数を指定します。

(例)
  Sub test()
    Dim MyStr As String
    Open "C:\Users\test.txt" For Input As #1
      Do Until EOF(1)
        Line Input #1, MyStr
        Debug.Print MyStr
      Loop
    Close #1
  End Sub
上の例では、C:\Usersフォルダにあるtest.txtの内容を1行ずつ読み込み、イミディエイトウィンドウに出力します。

Print #ステートメント
Print #filenumber,[outputlist]

Outputモードで開いたファイルに、データを書き込みます。引数filenumberには、任意のファイル番号を指定します。引数outputlistには、次の形式で出力するデータを指定します。省略可能です。
形式 [{Spc(n) | Tab[(n)]}] [expression] [charpos]
Spc(n) n個のスペースを挿入します。省略可能です
Tab(n) n番目の桁位置に出力します。nを省略すると次の印字領域の先頭に出力します。省略可能です
expression 出力するデータを指定します。省略可能です
charpos 次の文字を出力する桁位置を指定します。";"を指定すると最後に出力された文字の直後に出力されます。省略すると次の行の先頭に出力されます

(例)
  Sub test()
    Dim i As Long
    Open "C:\Users\test.txt" For Output As #1
      For i = 1 To 2
        Print #1, "TestData" & i
      Next i
      For i = 3 To 4
        Print #1, "TestData" & i;
      Next i
    Close #1
  End Sub
上の例では、C:\Usersフォルダにあるtest.txtに、1行目はTestData1、2行目はTestData2、3行目はTestData3TestData4と出力されます。

Width #ステートメント
Width #filenumber,width

ファイルに出力する行の幅を設定します。引数filenumberには、任意のファイル番号を指定します。引数widthには、1行に表示される文字数を指定します。

(例)
  Sub test()
    Dim i As Long
    Open "C:\Users\test.txt" For Output As #1
      Width #1, 5
      For i = 1 To 10
        Print #1, "A";
      Next i
    Close #1
  End Sub
上の例では、C:\Usersフォルダにあるtest.txtの、1行目と2行目にAAAAAを出力します。

Getステートメント
Get [#]filenumber,[recnumber],varname

ファイルからデータを読み込み変数に格納します。引数filenumberには、任意のファイル番号を指定します。引数recnumberには読込を始めるレコード番号やバイト位置を指定します。省略可能です。引数varnameには、データを読み込む変数を指定します。

Putステートメント
Put [#]filenumber,[recnumber],varname

ファイルに変数の内容を書き込みます。引数filenmberには、任意のファイル番号を指定します。引数recnumberは書き込みを始めるレコード番号やバイト位置を指定します。省略可能です。引数varnameには、書き込むデータの変数を指定します。

(例)
  Sub test()
    Dim MyStr As String * 4
    Open "C:\Users\test.txt" For Binary As #1
    Open "C:\Users\test2.txt" For Binary As #2
      Get #1, , MyStr
      Put #2, , MyStr
    Close #2
    Close #1
  End Sub
上の例では、C:\Usersフォルダにあるtest.txtのデータをバイナリモードで読み込み、同じフォルダのtest2.txtに出力しています。test.txtの内容が、ABCDEFGだった場合、test2.txtには、ABCDが出力されます。

Seekステートメント
Seek [#]filenumber,position

書き込みまたは読み込み位置を設定します。引数filenumberには、任意のファイル番号を指定します。引数positionには、書き込みまたは読み込む位置を指定します。

※ファイルの末尾より後ろの位置を指定して書き込みを行うと、ファイルの末尾に追加されます。
※GetおよびPutステートメントで指定したレコードは、Seekステートメントよりも優先されます。



次回も引き続き、ファイル操作、ディレクトリ・ドライブ操作のステートメントについて解説していきたいと思います。
 

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,