• ベストアンサー

Long型で表現できないファイルサイズへの対応

Excel VBAで、ファイルリストを作成するマクロを作成しています。 2GB以上の巨大なファイルだと、FileLen関数の戻り値が負になってしまいます。おそらく、Long型で表現できないためだと思います。 うまい逃げ方はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 FileSystemObject が簡単でしょう。File オブジェクトの Size プロパティーで参照できます。 2G オーバーのファイルなら VBA の Long 型の許容範囲を超えるかもし れませんね。  # Long型範囲: -2,147,483,648 ~ 2,147,483,647 VBA の FileLen は Long 型が戻り値なので、どうしても大きなファイル の場合は符号を補正する処理が必要になります。 一方、FileSystemObject の Size プロパティーの場合、このような補正 処理が不要です。受け取る変数は Double 型の変数を使うか、型変換して Currency型を使って下さい。Variant のままでも構いませんが。

PackmanBO
質問者

お礼

回答をありがとうございました。 FileSystemObjectを使うことは気が付きませんでした。

その他の回答 (1)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

http://www.officetanaka.net/excel/vba/filesystemobject/index.htm FileSystemObjectを使ってはいかがでしょう? FolderオブジェクトのFilesコレクションでフォルダ内のファイル一覧を取得し、 Fileオブジェクトでファイルのプロパティを取得できます。

PackmanBO
質問者

お礼

回答をありがとうございました。 FileSystemObjectを使うことは気が付きませんでした。

関連するQ&A