• 締切済み

ACCESSのフィールドサイズについて

ACCESSのフィールドにOLEオブジェクト形式で写真データを格納しているのですが、この写真のサイズ(KB)を取得できるのでしょうか?

みんなの回答

noname#185804
noname#185804
回答No.3

環境の違いか私が間違えてるだけなのか分かりませんが O_cyanさんの記載方法ではACCESSマクロでファイルサイズが 取得出来なかったので訂正させて頂きます。 Dim Fso As New FileSystemObject Dim MyFile As File Dim MySize As Long  'ファイルサイズがバイト単位で返るのでIntegerでなくてLongに。 Set MyFile = Fso.GetFile(ファイルのフルパス) MySize = MyFile.Size 'ファイルサイズがバイト単位で返ります Set Fso = Nothing '注*1 注1:Set Fso = Nothing が無くても コード終了時に自動的にNothingされるが 私は念の為に付けるようにしています。 尚、FileSystemObjectを使用する場合はマクロの参照設定で Microsoft Scripting Runtimeにチェックを入れて下さい。 他にFileLen関数を使用しても可能かと Dim MySize As Long MySize = FileLen("C:\My Documents\db1.mdb") 'ファイルサイズがバイト単位で返ります また、APIのGetFileSize等でもファイルサイズを取得出来ますが FileSystemObjectやFileLen関数の方がコードが短く簡単です。

kurimame
質問者

お礼

ありがというございます。 参考になりました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>OLEオブジェクト形式で写真データを格納しているのですがこの写真のサイズ(KB)を取得できるのでしょうか OLEオブジェクトではその写真のバイナリデータを格納しているのでその中からでは出来ません。 VBで通常はFileSystemObject等を使って写真のファイルサイズなどを取得します。 Dim Fso As New FileSystemObject Dim MyFile As File Dim MySize As integer MyFile = Fso.GetFile("写真のフルパスとファイ名.拡張子") MySize = FsoFile.Size こんな感じで取得するようになります。

kurimame
質問者

お礼

ありがというございます。 参考になりました。

noname#182251
noname#182251
回答No.1

できないと思いますが、この点に自信はありません(^^; で、代案として 1.格納時に元データのサイズを取得し記録しておく 2.OLEオブジェクト形式をやめ元データを特定のフォルダに格納すると共に、そのファイルパスをデータベースで管理する 特に、2.の方法がお勧めです。現在約8千枚(将来は数万枚)の画像を管理していますがOLEオブジェクト形式は何かと不便です。たとえばファイルパス方式ならば、1ドライブに格納しきれない大量のデータを複数ドライブに分散できるなど。またレタッチ時にオリジナルデータを残す操作なども簡単にできます。

kurimame
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A