GetFile について

ファイル一覧を作成した時は、GetFolderメソッドで、FilesプロパティをFor Each…Nextステートメントで回して、Fileオブジェクトを取得しました

主なメソッドやプロパティはそこで記載したので、もうお判りでしょう!?w

そのFileオブジェクトを取得するメソッドについてです!

■GetFileメソッド

広告

パラメータで指定したファイルのFileオブジェクトを取得します

・構文

構文は以下の通りです

object.GetFile(filespec)

objectはFileSystemObjectのオブジェクトです

・パラメータ

メソッドのパラメータは以下の通りです

  • filespec … オブジェクトを取得したいファイルのパス

ファイルへのパス(絶対パスもしくは相対パス)を指定します

存在しないファイルを指定した場合は、エラーが発生します

・戻り値

メソッドの戻り値は以下の通りです

  • Fileオブジェクト

指定したファイルのFileオブジェクトが戻り値として取得できますので、変数にSetしてください

■例

広告

・簡単なサンプル?

①GetFileのサンプル

②呼び出し元関数のサンプル

③簡略化したGetFileのサンプル

・説明

FileSystemObjectを使おうが、別の何かを使おうが、とにかく関数化しておくことをお勧めします!

戻り値がオブジェクトなので、FileSystemObjectとFileの両方のオブジェクトを変数で作成しようとすると、①のように大変回りくどいことになってしまいますw

そのため、シンプルに③のようにするのが良いかと思います

・より良いサンプル

それでも気持ち悪いから嫌だ!という方は、こちらの「より良いサンプル」をどうぞ!w
④GetFileのより良いサンプル

⑤呼び出し元関数のサンプル2

⑥簡略化したGetFileのより良いサンプル

・更により良くする

更により良い関数化を行う場合はエラートラップを行って、その結果(エラーが起きたかどうか)を「GetFile_Sample」の戻り値で返す!
そうすると、呼び出し側は引数で受け取ったオブジェクトが正しいかどうかを関数の戻り値で判断できるので、「oFile」を参照して判断する必要がなくなりますね!

「If Not (oFile Is Nothing) Then … End If」で処理してもいいですが、「否定の否定」的な感じになるので「If (戻り値 = True) Then … End If」が良いです
「If (oFile Is Nothing) Then … Else … End If」でもありですけどね!
※この「Is Nothing」は「If ((oFile Is Nothing) = True) Then」のように見えるので、便利ですけどあまり好きじゃないですw

えーーーっと、もうサンプルは書きませんよw

・注意点

  • 指定するファイルパスは存在しないとエラーになる
  • FileExistsメソッドでファイルの存在確認をしておく
  • GetFileメソッドのエラー有無でファイルの存在確認としない
  • オブジェクトを返すメソッドを関数化するときは、引数で受け渡す
  • 関数内変数にSetしたオブジェクトは、関数内でNothingする
  • 引数で受け取って関数内でSetしたオブジェクトは、呼び出し側でNothingする
  • 関数内で起きたエラーは、呼び出し側に通知すべき

・その他

Excel VBAでも関数の引数には、ByVal(値渡し)とByRef(参照渡し)があります
趣味の世界かも知れませんが、本来は全ての関数の全ての引数で、正しく宣言するべきです!
※でもーーー、面倒なのでこのブログのサンプルでは使わないと思いますw

この宣言は、ソースコードを書いた人以外の人が見た時に、ByValならば値は変更されない、ByRefならば値を受け取るのだと、関数の中身を見なくてもわかるためなので、プログラマーを目指すなら書くべき!
ま、ただの人なら書かなくてもいいですけどねーw

次はどのメソッドを調べましょうかね?

ではでは

シェア
広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い