• ベストアンサー

ハイパーリンク型フィールドからファイルを開く

ACCESS2007を使用しています。 まず、ハイパーリンク型のフィールドをひとつ持つテーブルAがあります。 そのフィールドには、例えば C:\My Documents\workbook1.xis というリンクが格納されています。 フォームからの条件入力により、テーブルAよりレコードが抽出されるクエリBを作りました。 そのクエリBに含まれる、レコードのハイパーリンク先のファイルを一括で開くVBAを作ろうとしたのですが、まったく方法が思いつきません。 どなたか、ご教授願えないでしょうか?

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

Access2010でやってみましたが、2007でも、それ以前でも動くと思います。ご参考まで。 前提:Q_Hyperlinkというクエリに、Hyperlinkという名前のフィールドがあるとします。 (紛らわしいですね...) ただし、エクセルのファイルを、マクロ有効無効に煩わされずに開きたいといった場合は、 さらに工夫が必要となります。 Sub test() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("Q_Hyperlink", dbOpenSnapshot) Do Until rs.EOF Application.FollowHyperlink (rs!Hyperlink) rs.MoveNext Loop Set db = Nothing Set rs = Nothing End Sub '当方の使い慣れたADOの場合、Ac2010では参照設定する必要があります。 Sub test2() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open "Q_Hyperlink", cn, adOpenForwardOnly, adLockReadOnly Do Until rs.EOF Application.FollowHyperlink (rs!Hyperlink) rs.MoveNext Loop rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub '

thunder-sg
質問者

お礼

WEBを検索しまくった結果、クエリーの抽出条件がフォームのテキストボックスを参照していた場合、パラメーターの設定が必要とのことで、QueryDefを使ってなんとか自己解決できました。 ご協力ありがとうございました。<(_ _*)>

thunder-sg
質問者

補足

丁寧なご回答ありがとうございます。 早速、使ってみたのですがDAOの場合「パラメータが少なすぎます。1を指定してください。」 ADOの場合、「SQLステートメントが正しくありません。'DELETE','INSERT','PRCEDURE','SELECT',または'UPDATE'を使用してください。」 とエラーが返ります。どうしたら良いでしょうか?

関連するQ&A

  • Access2013で翌日のデータのみのクエリ

    お世話になります。 Access2013を使用しており、2つの日付フィールドを比較して 翌日のレコードのみ抜き出したい場合のクエリについて質問で ございます。 日付Aフィールド と 日付Bフィールドが あり、それぞれ日付と時刻が書式yyyy/mm/dd hhmmss で格納されております。 このうち、クエリで抽出したいのは、 日付Bフィールドに格納されている、 日付Aフィールドの翌日のレコードのみを 抽出したいです。 その際、時刻(hhmmss)は無視して翌日のレコードを 抽出したいです。 例えば、 日付Aフィールドに 2016/08/24 15:00:00 2016/08/24 16:00:00 2016/08/24 17:00:00 というデータが格納されていて、 日付Bフィールドに 2016/08/25 00:00:00 2016/08/25 17:00:00 2016/08/26 00:00:00 というデータが格納されていた場合、 日付Bフィールドの 2016/08/25 00:00:00 2016/08/25 17:00:00 のみ抽出したいです。 この場合のクエリの設定方法を教えてください。 どうぞ宜しくお願いいたします。

  • フィールドにテキストしか入ってないレコードの抽出

    ハイパーリンク型のフィールドにテキストしか入ってないレコードを取り出したいです。 1レコード目が 表示文字列:http://jp.msn.com アドレス:http://jp.msn.com (クリックしたらURLが開く) 2レコード目が 表示文字列:http://jp.msn.com アドレス:null (クリックしても何も起きない) の二つのレコードがあります。 クエリで2レコード目のように ハイパーリンク型のフィールドなのに、表示文字列しか入ってないレコードを抜き出したいのですが やり方がわかりません。 クエリの抽出条件に Not Like "*#*" を入れてもどちらも該当してしまいます。 ハイパーリンク型のフィールドのアドレスがNullのレコードの抜き出し方を教えてください。 よろしくお願いいたします。 (当方access2003です)

  • 【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです

    【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです。 Access2003を使っています。 困っている状況は以下のようなもです。 ■テーブル1  ・フィールド1 ■クエリ1  ・フィールドA:フィールド1  ・フィールドB:[フィールドA]   【抽出条件】>=10 このような条件で、クエリを実行すると、 「パラメータの入力 フィールドA」というダイアログが立ち上がってしまいます。 上記載のクエリ1でフィールドAの[]は自然についてしまうのではずせません。 今はもう一つクエリを作る事でこの状況はなんとかしましたが、フィールドに別名をつける毎にクエリを作るとクエリの数が多くなってしまうので困っています。 クエリでフィールドに別名をつけた場合は、そのクエリ上でその別名を使って抽出をかけることはできないのでしょうか? よろしくお願いします。

  • レコードの文字列をフィールド抽出のクエリとして指定

    レコードの文字列として リンゴ ミカン イチゴ となっていたときに、この3つを別のテーブルにあるフィールド名のリンゴ、ミカン、イチゴのみを抽出するクエリをVBAで指定できますか?

  • アクセスのテキスト型フィールドの初期値

    アクセスのテーブルにテキスト型フィールド「●●日付」を作成しました。さらに、定型入力の方法として、日付(____/__/__)を指定しています。 このテーブルから、クエリでデータを取得する際、●●日付にデータを入力していないレコードのみを取得したいと思い、クエリの抽出条件として=""(ダブルクォーテーション)や=''(シングルクォーテーション)と記載したのですが、レコードが1件も抽出されません(もちろん●●日付にデータを入れていないレコードは複数あります)。一方で、<>""や<>''で、●●日付にデータが入力されているレコードを抽出しようとした場合は、●●日付にデータが入力されているレコードが抽出されます。 テキスト型フィールドにデータが入力されていないレコードを抽出するクエリはどのようにしたら作成できるのでしょうか?

  • キーのフィールドが最大値の他フィールドのデータ抽出

    下記のようなテーブルがあったとします。 ----------------------  (1) | (2) | (3)  ----------------------  A | 3 | あ  A | 1 | い  A | 5 | う  B | 3 | え  B | 2 | お ---------------------- フィールド(1)がグループで、それぞれAグループ、 Bグループとします。 このとき、それぞれのグループ内のフィールド(2)が 最大のレコードのフィールド(3)データを抽出したいのですが、 どのようにすればよいでしょうか? 上記の例で言うと、 ----------------------  (1) | (2) | (3)  ----------------------  A | 5 | う  B | 3 | え ---------------------- という結果を得たいのですが・・・

  • クエリーで全部のデータを抽出する方法

    アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド   A      B     c テーブル   テーブル1 テーブル1 テーブル1 抽出条件    []    [] または    ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。

  • Access 2007で、テーブルからレコードを削除するクエリを作りた

    Access 2007で、テーブルからレコードを削除するクエリを作りたい。 具体的には、テーブルAのフィールドF1とテーブルBのフィールドF2があるとします。このとき、テーブルA中の各レコード(仮にXとします)であって、そのF1の値と同じ値をF2に持つレコードがテーブルBに含まれている場合は、(テーブルAから)そのレコードXを削除するという処理をしたいのです。ややこしいと思いますが、これをクエリやマクロで作ることはできるでしょうか? 私はVBAを知らない初心者です。上の処理も文章で書くと理解してもらえるかどうか不安ですが、だれか助けて下さい。

  • 同じフィールドから複数条件のAND条件で抽出する方法

    お世話になります。 同じフィールドから複数条件のAND条件で抽出する方法 DBはAccessです。 フィールド1がA フィールド2がBという条件でしたら Select 抽出フィールド form テーブル where フィールド1=A and フィールド2=B で行っています。 フィールド1がAまたはBでしたら Select 抽出フィールド form テーブル where フィールド1=A or フィールド1=B で行っています。 それではフィールド1がAもBも満たす抽出はどのようにしたら良いのでしょうか。 例: 学生テーブル  フィールド 学生ID、氏名 履修科目テーブル  フィールド 学生ID、同一学生内連番、科目 というテーブル構成で英語、国語のどちらも履修している学生を抽出する場合などです。 2テーブルをリンクしたクエリを作ったのですが、 単にフィールド 学生ID、氏名、同一学生内連番、科目 なのでどちらも履修している学生を抽出できませんでした。 どのようにしたらよろしいのでしょうか。よろしくお願いいたします。

  • Msgboxにテーブルのレコードを表示させたい。

    毎度、お世話になります。 Access2000でMsgboxに、テーブル作成クエリーで抽出したレコード名を表示させたいのです。 テーブルAのBフィールドに入っているB'というレコードです。 おわかり頂けましたでしょうか? 最終的には Msgbox(B' & "です。")としたいのですが・・・ よろしくお願いします。

専門家に質問してみよう