Access2000のフォームに画像を表示する方法

このQ&Aのポイント
  • Access2000のフォームに画像を表示する方法を探しています。
  • 画像の絶対パスを記録したテーブルを作成し、Accessフォームのイメージウィンドウに画像を表示することができます。
  • しかし、大量の画像を表示する際にパフォーマンスの問題が発生する可能性があります。
回答を見る
  • ベストアンサー

Access2000のフォームに画像を表示する(XP)

ExelのVBAではある程度のプログラムが組めますが、Accessは2週間前から始めた初心者です。 画像の絶対パスを記録したテーブルを作成し、Accessフォームのイメージウィンドウに画像を表示するところまではできました。 そこで質問なのですが、 1.「C:\sample\test」というフォルダ内に30個ほどの画像があるとして、このフォルダの絶対パスのテーブルからその中にある画像を表示することはできるのでしょうか?というのは、そのフォルダは全部で3万個もあり、つまり画像は全部で90万個もあるのです。 2.クエリで抽出した画像の絶対パスを利用して、その画像をフォームのイメージウィンドウに表示する方法がわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.3

| 2.画像の絶対パスのテーブルからフォーム上に表示して、ボタンで最初から最後まで「全部」を見ることはできます。しかしクエリで抽出したものだけを見ることができていません。 これは自己解決されたようなので | イミーディエトウィンドウにリストアップされたパスをフォームのイメージウィンドウに反映させる方法がわからないのです。 これは、配列を使えば出来るでしょう FolderSearch関数をちょっといじれば出来るはず。 ヒントは ReDim Preserve かなー Public Sub FolderSearch(ByVal strTargetDir As String, ByRef returnArray() As String)  Dim iSize  iSize = 0 For Each file In folder.Files   With file    Debug.Print .Name, .Path, .Size    ReDim Preserve returnArray(iSize + 1)    returnArray(iSize) = .Path    iSize = iSize + 1   End With  Next file End Sub

yahooyaffo
質問者

お礼

phoenix343さん、どうもありがとうございました。 何とかできそうです。 「ExelのVBAではある程度のプログラムが組めます」などと余計なことを書いたために、私にとってはかなりレベルの高いアドバイスを頂きました。しかしそのお陰で非常に勉強になりました。

その他の回答 (2)

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

質問が矛盾しているように見えますが、、 | 画像の絶対パスを記録したテーブルを作成し、Accessフォームのイメージウィンドウに画像を表示するところまではできました。 | 2.クエリで抽出した画像の絶対パスを利用して、その画像をフォームのイメージウィンドウに表示する方法がわかりません。 とりあえず1だけ 絶対パスのテーブルから というのは、 絶対パスにある画像全部を表示ってことでしょうか? 出来ないとは言わないけど、 凄い帳票数になりそうですね… 絶対パスからファイル名検索をかけ、 見つかったファイル名ぶん、 Pictureコントロールを追加すればいいだけですね。

yahooyaffo
質問者

お礼

回答ありがとうございます。質問がわかりにくかったかもしれません。 1.フォルダ名を与えてそのフォルダ以下に含まれるすべての画像フォルダの絶対パスを求めるプロシージャは、「http://www.tsware.jp/tips/tips_478.htm」を参考にして作ることができました。しかしイミーディエトウィンドウにリストアップされたパスをフォームのイメージウィンドウに反映させる方法がわからないのです。 2.画像の絶対パスのテーブルからフォーム上に表示して、ボタンで最初から最後まで「全部」を見ることはできます。しかしクエリで抽出したものだけを見ることができていません。 最終的なイメージを申し上げますと、あるID番号を入力するとそのID番号の画像を保存したフォルダのリストが表示され(フォルダはあちこちにあります)、それをクリックすると画像が表示されるというような感じです。 よろしくお願いします。

yahooyaffo
質問者

補足

済みません、2は自己解決しました。 フォームのプロパティでレコードソースをクエリにするだけでよかったんですね。

  • k_kishi
  • ベストアンサー率36% (34/93)
回答No.1

おこたえになっているかわかりませんが、FOMのから、テキスト等が出版されていますのでそちらをご購入されて勉強されのもよいかとおもいます。 参考まで。 いじょう

関連するQ&A

  • ACCESSのフォームだけを起動する方法

    ACCESS2000のVBAにて、管理システムのようなものを作成しました。  このままクライアントに渡すと、新規にテーブルを作ったり、新規にクエリを作成したりと、せっかくのデータベース、レポートがぐちゃぐちゃになりそうな気がします。  そこで、おききしたいことがあります。   ・フォームだけを表示できないでしょうか。    ※ACCESS起動後、フォームだけが起動する。    その他、メニューは表示させない。    (テーブルからのデータ入力、フィールド追加、クエリ作成をできないようにする)    "F11"キーでのメニュー表示も無効にする。 データベースは、SQLからテーブルリンクしております。 どうぞよろしくお願い致します。

  • ACCESSのフォームフィルタ

    ACCESS初心者です。 テーブルでフォームフィルタを使ってOR条件をつけてデータを抽出しましたが、解除ボタンで解除できるのですが、次にフィルタボタンを押すと前の条件で抽出されたデータが表示されてしまいます。 何も条件をつけなかった状態に戻すには、データウィンドウに戻るしかないでしょうか?

  • ACCESS フォームに画像一覧表表示

    Microsoft Access2007 or 2003で質問させていただきます。 フォームに画像一覧を表示する事は可能でしょうか。 テーブルにはファイルのフルパスファイル名が格納されており、フォームの詳細部分にそのレコードの画像ファイルを表示したいと思います。 画面には、画像ファイルが縦に並ぶようなイメージです。 私の知識で作成したところ、全レコード、1レコード目の画像表示になってしまいます。 データ数が多いので、OLEオブジェクトは使用しない方法で、良い方法はないでしょうか。

  • Accessのフォームのみ表示させたい

    Accessを起動した際、フォームのみ表示するにはどうすればよいのでしょうか? (Accessを起動すると、オブジェクトメニュー?(テーブルやクエリ等のオブジクトを選択するウィンドウ)を表示させないで、フォームのみを表示させるには?) また、上記と同じようにして、なおかつAccessを起動させないでフォームで起動や終了といったことが出来るのでしょうか? やはりこれはVB等プログラミングでないと出来ないのでしょうか?ちなみに私はプログラミングは全く出来ません。 わかる方、教えて下さい。宜しくお願いします。

  • メインレコード1件に対する複数画像を、フォーム上で表示させるには

    Access2003で、画像の管理をしています。 現在、テーブルは1つ(t_名簿)だけで、[名簿ID][氏名][パス名]の項目があります。 フォーム上にイメージコントロールを配置して、入力されたパス名から、別フォルダに格納してある画像を表示させています。これは問題なくできました。 しかし画像が無限に増えていくので、現在の様に「1レコードにつき1枚の画像」ではなく、「1件のメインレコードに対し複数の画像」という風にしたいと思います。 t_名簿→[名簿ID][氏名] t_パス→[パスID][名簿ID][パス名] このようにテーブルを2つにし、サブフォームのあるメインフォームを作成しました。 このような状態で、フォーム上で複数の画像を表示させることは可能でしょうか? サブフォームに3件のパス名があれば、3枚の画像を表示させるといった風です。 イベントのコードをどのように書けばよいのか検討がつかないので、教えて頂ければと思います。 直接画像を埋め込むという方法も試しましたが、ファイルサイズが大きくなりすぎて快適に作業ができませんでした。 なので、パス名から画像を表示させたいと思っています。

  • アクセスのフォーム

    アクセスのフォームで、ヘッダー部にボタンを3つ作成し、それぞれ名前を"1","2","3"とします。そして、全てのボタンに埋め込みマクロで"1"にはクエリ1を実行する、"2"にはクエリ2を実行する、"3"にはクエリ3を実行するというマクロを埋め込みます この時ボタンをクリックすると、その結果がフォームの詳細部分に表示させる事はできますか?例えば"2"をクリックすれば詳細部分にクエリ2の結果が表示される様にしたいです。それぞれのクエリの構成は異なります。テーブル形式で表示されるのではなく、フォームの形式で表示される様にしたいです。 表示された文字をクリックするとヘッダー部のテキストボックスにその文字が入力され、クエリの抽出条件がそのテキストボックスになっており、クエリ実行ボタンを押せばその抽出条件でクエリが実行され、詳細部分に表示・・・という様に検索できる様にしたいです。文字をクリックすればテキストボックスへというのは以前この場で教えて頂きました。 説明がうまくできなくてすいません。誰か教えて下さい。 よろしくお願いします。

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • Accessのサブフォームからフォームフィルタを使ってメインフォームも含めたレコードの抽出が出来ないのは何故でしょうか?

    フォームフィルタを利用してサブフォームに入力されている値でレコードの抽出を行いたいのですが、うまくできません。 メインフォームが持っているレコード全てを持ってきます。 メインフォームに含まれているデータが100件なら、それ全てを表示してしまうということです。 私が抽出したいレコードは2件だけです。 メインフォームからフォームフィルタを利用して抽出すると正しい結果が得られます。 これはどうしてでしょうか? サブフォームへの設定が何か足りないのでしょうか? 親・子のフォームのテーブルは同一のものです。 カテゴリーで親と子にフォームを分けました。 親にはクエリはなくて、リレーションシップしたテーブル数種から直接フォームにひっぱってあります。 子は一つのテーブルからクエリを作って、そのクエリからフォームに引っ張っています。 Access2003です。 どなたかご教示いただきますようお願いいたします。

  • Accessフォームへの写真読み込みのエラー

    Accessのテーブルに、社員番号などから、自動的に写真のフルパスを入れて、フォームに表示させるようにしています。 問題なく、写真を表示することができるのですが、中には写真のないレコードもありまして、そこで写真が読み込めないのでエラーが出てしまいます。 解決策として今考えられるのは、 1.写真のない社員については、ダミーのファイルをあらかじめ作っておく(→ダミーを作るのが面倒) 2.テーブルのフルパスを消しておく(→せっかく自動でフルパスを入れているのに、写真の有無を確認しながら、一つずつ消すのは大変) 以上から、指定フォルダにフルパスに該当する写真がない場合は、エラーでなく、読み込まないという設定はできないでしょうか? あるいは抜本的に変えて、フォーム上のイメージをクリックするなどして、表示させる写真を選択できるようにすることができないでしょうか? Accessにあまり詳しくないのですが、簡単なVBAなら理解できます。よろしくお願いいたします。

  • Access フォームに画像を表示させたい

     Win XP Office 2003 Accessを勉強中です。  フォームに画像を添付して、フォームに画像そのものを表示させたいのですが、デザインビュー>コントロール>イメージ>に イメージを挿入しようとしても、ファイル名だけが表示されるだけで、画像そのものを表示させることが出来ません。 これは何故でしょうか。 一体何が原因でこのようになるのでしょうか。

専門家に質問してみよう