【先着1,000名様!】1,000円分をプレゼント!

Access2003を使用しています。
フォームにハイパーリンク型のテキストボックスを配しました。
そこにハイパーリンクのパスを貼る時の「ハイパーリンクの挿入」の出し方について教えてください。
使っている.mdbの開き方は2種類あります。
(1)立ち上げて最初に表示されるメッセージで「開く」ボタンを押すと、入力しかできない(これの名称がわからないため、言葉の説明ですみません)。
(2)中の設定などをいじりたいときは、ctrl+[開く]で立ち上げています。
このやりかたで立ち上げたときは、フォーム上のメニューバーの挿入に「ハイパーリンク」が出てくるか、ハイパーリンクのテキストボックスにカーソルを置いた状態で右クリックすると「ハイパーリンク」が表示されます。
ところが、(1)の入力しか出来ないやり方で開くと、「ハイパーリンクの挿入」を立ち上げるには、カーソルをハイパーリンク型のテキストボックスにカーソルを置いた状態でショートカットキーのctrl+K を使うしかないようなんです。メニューバーに表示されないのです。
これは、どうしてなのでしょうか?
この問題を解決する方法を教えていただけないでしょうか?
お手数をおかけして申し訳ありませんが、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

No.1です。



> 設定の仕方がわかりません。

コマンドボタンの名前を『リンク挿入』、ハイパーリンクを挿入するテキストボックスの名前を
『リンク』とすると、以下のようなコードになります(上記コマンドボタンのクリック時イベント):

Private Sub リンク挿入_Click()
On Error GoTo エラー処理

  'ハイパーリンクを挿入するテキストボックスに移動
  リンク.SetFocus
  '『ハイパーリンクの挿入』ダイアログを表示
  DoCmd.RunCommand acCmdInsertHyperlink

終了処理:
  Exit Sub
エラー処理:
  If Err = 2501 Then '上記ダイアログでキャンセル選択時はそのまま処理を継続
    Resume Next
  Else            '上記以外のエラー時はメッセージを表示して処理を中止
    MsgBox Err & ":" & Error$, , Me.Name & " リンク挿入"
    Resume 終了処理
  End If
End Sub


なお、上記のコードは、ハイパーリンクを挿入するテキストボックスとコマンドボタンが同じ
フォーム(又は同じサブフォーム)上にあることを前提にしています。
テキストボックスが「サブ」という名前のサブフォームに、コマンドボタンがメインフォームにある
場合は、「リンク.SetFocus」の1行を、以下のように変更します:

  With サブ
    .SetFocus
    !リンク.SetFocus
  End With


・・・以上です。


*VBAではなく『マクロ』オブジェクトで行う場合は、テキストボックスやサブフォームへの移動は、
 「コントロールの移動」アクションを選択し、引数にコントロール名を指定します。
 ハイパーリンクの挿入は、「コマンドの実行」アクションを選択し、引数に「ハイパーリンクの
 挿入」を指定します。

この回答への補足

教えていただいた二つの方法とも出来ました!
ありがとうございます。
またまた質問をしてすみません。
リンクを貼りたいテキストボックスは5個あるのですが、
(1)コマンドボタンも5個作って対応することになるでしょうか?それとも、
(2)ひとつのコマンドボタンで対応する方法もあるのでしょうか?(カーソルで先にテキストボックスを指定しておいて、カーソルがあるテキストボックスにハイパーリンクを挿入するといった条件処理のようなのをイメージしています。)
とりあえず自分で解決できる(1)の方法で行ってみます。
もし、(2)の方法をご存知でしたら教えていただけないでしょうか?
お手を煩わせて申し訳ありません。
よろしかったらお願いします。

補足日時:2007/11/22 11:00
    • good
    • 0

No.3です。



> メインのテーブルの1レコードに対し、サブフォームでハイパーリンク型の
> テキストボックスを5個作ることにしました。

私も見よう見まねの独学(しかも参考書・解説書の類は読んだことなし、最初の
数年はAccess付属のヘルプのみを頼りにしてのトライ&エラー)なのですが・・・
私がつくるとしたら、「メインフォーム側のテーブルのID」と「サブフォーム側の
テーブル側のID」を一対他の関係にするかな、と思います。
で、サブフォームは帳票型かデータシート型に設定、ですね。


なぜこうするかというと、こうしておけば、「6個目のハイパーリンクが必要になった」
「やっぱりさらに2件追加して」といった要望が発生しないで済むからです。
(逆に、ハイパーリンクの登録が1,2件だけしかないレコードが殆どの場合には、
 データベースのサイズが無駄に大きくなるのを防ぐこともできる(はず(汗))、という
 メリットもあります)

また、ハイパーリンクの登録先となるフィールド・コントロールは1つで済むため、
今回のようにテキストボックスごとに個別にコードを組まなければならない、
といったことも防げるわけです。


ただ、このあたりの扱いは、ある程度慣れてからでないと、かえって難しくなって
しまう面もあるので(→例えば、サブフォーム上のハイパーリンクを、登録した順に
並べるためには、通し番号になるSubIDを新たに設定する必要がある、など)、
とりあえず頭の片隅に置いておいていただければ、と思います。
    • good
    • 0
この回答へのお礼

独学でここまでの力をお持ちとは感心してしまいます。かなり頑張られたのでしょうね。
全レコードに対してハイパーリンクの個数を均一にすることは、メモリの無駄遣い、個数が多い時などに対応できない点から私も避けたかったのですが、このようなやり方しか出来ないのではと思ってしまっていました。
設計のことまでアドバイスを下さってありがとうございました。
幸い、サブフォームのデータが0の状態でしたので作り直しました。
幾つもの質問に懇切丁寧に教えて頂いたのにポイント20点しか差し上げれなくて申し訳なく思います。
本当にありがとうございました。
*皆さま、この方はよい回答者様ですよー!*

お礼日時:2007/11/29 15:52

No.1、2です。



> ひとつのコマンドボタンで対応する方法

一例として、コマンドボタンの隣にコンボボックス設置し、それを使用する方法を
説明します:

1)フォームをデザインビューで開く
2)新規コンボボックスを設置(コントロール名は『挿入先』とします)
3)コンボボックスのプロパティシートで、『データ』タブの各項目を以下のように設定:
 値集合タイプ=「値リスト」
 値集合ソース=「リンク1;リンク2;リンク3;リンク4;リンク5」
   *ハイパーリンクの挿入先のテキストボックス名を、「;」区切りで並べます。
   (テキストボックス名に特殊な文字を使用している場合は、「"リンク1";"リンク2"・・・」と
   「"」で囲みます(「"」を名前に使用している場合は、「'リンク1';'リンク2'・・」と「'」で囲む))
 入力チェック=「はい」
 既定値=「リンク1」 (→これは空欄のままでも可)
4)前回設置した『リンク挿入』ボタンのクリック時イベントのコードを以下に差し替え:
Private Sub リンク挿入_Click()
On Error Goto エラー処理

  If IsNull(挿入先) Then
    MsgBox "挿入先を指定して下さい。",,"確認"
  Else
    '『挿入先』で指定したテキストボックスに移動
    Me.Controls(挿入先).SetFocus
    '『ハイパーリンクの挿入』ダイアログを表示
    DoCmd.RunCommand acCmdInsertHyperlink
  End If

終了処理:
  Exit Sub
エラー処理:
  If Err = 2501 Then
    Resume Next
  Else
    MsgBox Err & ":" & Error$, , Me.Name & " リンク挿入"
    Resume 終了処理
  End If
End Sub


前回と同様、サブフォームの場合の場合はテキストボックスへの移動部分は差し替えが
必要です。(「Me.Controls(挿入先).SetFocus」の行)

    With サブ
      .SetFocus
      .Controls(挿入先).SetFocus
    End With


なお、
> カーソルで先にテキストボックスを指定しておいて、カーソルがあるテキストボックスに
> ハイパーリンクを挿入
としたい場合は、上記の設定をした上で、それぞれのテキストボックスのフォーカス取得時
イベントで、『挿入先』コンボボックスにそのテキストボックス名を入力してやって下さい。

Private Sub リンク1_Enter()
On Error Resume Next

  '同一フォームの場合はこちら
  挿入先 = "リンク1"
  'サブフォームの場合はこちら(上のコードを削除し、下の先頭の「'」を削除)
  'Me.Parent!挿入先 = "リンク1"

End Sub


最後に、これは今後についてのアドバイスですが・・・
『起動時の設定』がされていたということは、他の方が作られたDBの改善だと思いますが、
1レコードに5つのハイパーリンクを保存というのは、テーブル構造として問題を抱えている
のではないかという気がします。
とはいえ、手直しとなるとかなりの手間なのは想像に難くないので、現在のDBは余裕が
できたときに見直されるとして、今後新しいDBを作成されるときは、今回の手法をとるより、
テーブルを分割して1レコードにハイパーリンクが1件になる(複数必要な場合はサブフォーム
上の複数レコードとして表示させる)ようにすることをお勧めしておきます。

この回答への補足

教えていただいたとおりにやってみたら、希望どおりのものが完成しました。
ご丁寧に教えていただいてありがとうございます!
テーブル構造のことなのですが、この部分は、私が設計をしました。
(前任者が作成したデータベースを、使用者の依頼に沿って修正するのが私の役目です。)
設計の仕方もよく理解できていないので、どのような設計をしたらいいのか悩んだのですが、
メインのテーブルの1レコードに対し、サブフォーム
でハイパーリンク型のテキストボックスを5個作ることにしました。
メインフォームとサブフォームは共通のIDでリンク付けました。
これは、回答者様のアドバイスとあっているでしょうか?とすれば、私の設計でOKだったということになりますね。サブフォームのハイパーリンクのことだけを聞いてしまったので説明がたりなかったですね。
アクセスは、とても難しいのですが、回答者様のように懇切丁寧に教えてくださる方がいらっしゃるおかげで私のようなものでもなんとか今の任務を果たすことが出来ています。心底、感謝しております。
よろしかったら今後もよろしくお願いします。

補足日時:2007/11/27 11:36
    • good
    • 0

> 中の設定などをいじりたいときは、ctrl+[開く]で立ち上げています。



「Ctrl」ではなく「Shift」ではないでしょうか?
とりあえず、その前提で回答しますが・・・

1)Shiftキーを押しながら問題のmdbファイルを開く
2)メニューで「ツール(T)→起動時の設定(U)」を選択
3)『起動時の設定』ダイアログが開くので、
 メニューについては『すべてのメニューを表示する(U)』のチェック
 右クリックについては『既定のショートカット メニュー(W)』のチェック
 を、それぞれオンに設定
4)『OK』ボタンをクリック

・・・以上です。

これで、次回からはShiftキーを押さなかった場合でも、全てのメニュー項目が
表示されると思います。

なお、上記の方法だと、メニュー全てが許可されることになりますので、
それでは問題があるという場合は、必要なメニューのみを使用できるように
したメニューバーを作成した上で、『起動時の設定』ダイアログの
『メニューバー(M)』欄にそのメニューバーの名前を設定して下さい。
(ただ、必要なメニュー項目全てを拾い出すのは、かなり面倒なので、
 『すべてのメニューを表示する』のチェックは外して、メニューは現状通り
 制限を掛けたままにして、ハイパーリンクの挿入はコマンドボタンなどで
 対応したほうが楽かと思います)

この回答への補足

ご回答ありがとうございます。
おっしゃるとおりで、Shiftキーの間違いでした。
回答者様に教えていただいた起動時の設定の方法で出来ました。
しかしながら、全てのメニューが表示されるのはやはり危険なので、3番目の方法をとってみたいのですが、設定の仕方がわかりません。
フォーム上にコマンドボタンは作りました。
そこからどうすればいいのでしょうか?
2重の質問で申し訳ありませんが教えていただけないでしょうか?

補足日時:2007/11/21 10:08
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテキスト型のフィールドでハイパーリンク

アクセスのテキスト型のフィールド(URL)に
http://bekkoame.okwave.jp/qa1111.html
と入れていて、
そのテーブルを元にしたフォームを作成し、
フォームにテキストボックスを作りコントロールソースをURLにしました。

プロパティで
ハイパーリンクあり:はい
ハイパーリンクとして表示:ハイパーリンクである場合
としてますが、そのテキストボックスをクリックしてもハイパーリンクは開きません。

色は、青字に下線で見た目はハイパーリンクのようです。

テーブルのデータ型をハイパーリンクにしない限り、
フォームのコントロールをクリックしてサイトを開くことはできないのでしょうか?
URL列を主キーにしたいので、ハイパーリンク型は避けてました。

Aベストアンサー

アクセスのテキスト型のフィールド(URL)に
http://bekkoame.okwave.jp/qa1111.html
と入れていて、
そのテーブルを元にしたフォームを作成し、
フォームにテキストボックスを作りコントロールソースをURLにしました。
プロパティで
ハイパーリンクあり:はい
ハイパーリンクとして表示:ハイパーリンクである場合
--------------------------------------
Access2010を使ています。
試してみましたがダメでした
ハイパリンクのリンク先が空白なのが気になりますが
Yahooのホームページを入れてもダメでした

ところで
URL列を主キーにしたいので、ハイパーリンク型は避けてました。
---------------------------------
URL列を主キーにする狙いは何ですか
主キーにすると修正が効かないので大変不便です。
主キーはレコードをユニーク(重複なし)にするものだけと割り切って
意味のないオートナンバー型にしてCPにお任せで良いです。
またフォーム、レポートから主キーを表示しなくても何ら問題ありません

URL列を主キーにする狙いが重複を避けたいのであれば
テーブルのプロパティーでURLのインデックス項目を「重複なし」とします。

アクセスのテキスト型のフィールド(URL)に
http://bekkoame.okwave.jp/qa1111.html
と入れていて、
そのテーブルを元にしたフォームを作成し、
フォームにテキストボックスを作りコントロールソースをURLにしました。
プロパティで
ハイパーリンクあり:はい
ハイパーリンクとして表示:ハイパーリンクである場合
--------------------------------------
Access2010を使ています。
試してみましたがダメでした
ハイパリンクのリンク先が空白なのが気になりますが
Yahooのホームページを入れてもダメでした

と...続きを読む

QAccessのハイパーリンクをクリックしてもファイルが開かない

Accessでハイパーリンク型を設定して、そこにローカルのファイルまでの
絶対パスを記載しています。

絶対パスは作成したフォームのテキストボックスに記述されたパスを
VBAでUpdate文を利用してテーブルへ取りこんでいます。

その後、検索処理を行い作成した表形式のフォームに検索結果を表示します。
その際に、表示されたハイパーリンクをクリックすると該当ファイルが
開くようにしたいのですが、開くことができません。

文字列は青くなり、マウスカーソルも指型になっているのですが、
クリックしても何も反応がありません。

どなたか解決法を教えてください。
よろしくお願いいたします。

Aベストアンサー

> テキストボックスに記述されたパスをVBAでUpdate文を利用してテーブルへ

このUpdate文の記述はどうなっていますか。

ハイパーリンクのフィールド名を URL と仮定した時、
 ・・・ SET URL='" & Me.テキストボックス & "' ・・・・
となているところを、
 ・・・ SET URL='#" & Me.テキストボックス & "#' ・・・・

としてみるとどうなりますか。

QAccessのクエリでハイパーリンクの作成したい

Access2003にて、[商品]テーブルを使って、社内の別システム上にある商品ごとの詳細ページ(IEで閲覧するページです)へのハイパーリンクをクエリで作成したいのですが、全部で1600件ほどあるデータに対して、一括で作成するにはどのような方法がよいのかわからないで、教えてください。

クエリでは[商品]テーブルにある以下のフィールドを使います。
 ○[マスタNo]フィールド(数値型)
 ○[商品名]フィールド(テキスト型)
 ○[商品コード]フィールド(テキスト型)
 ※[商品コード]フィールドは半角英数の羅列です。

別システム上のURLは[http://shouhin/iteminfo.ashx?code=[商品コード]]となっています。
上記のように、別システムの詳細ページのURLでcode=の後に続く文字列は[商品]テーブルの[商品コード]フィールドになります。

クエリでは、[商品名]フィールドに上記のURLのハイパーリンクを貼り付けるか、新たなフィールドを設けてハイパーリンクを作成するのか、どちらかを実現したいので、ご教示よろしくお願いします。

Access2003にて、[商品]テーブルを使って、社内の別システム上にある商品ごとの詳細ページ(IEで閲覧するページです)へのハイパーリンクをクエリで作成したいのですが、全部で1600件ほどあるデータに対して、一括で作成するにはどのような方法がよいのかわからないで、教えてください。

クエリでは[商品]テーブルにある以下のフィールドを使います。
 ○[マスタNo]フィールド(数値型)
 ○[商品名]フィールド(テキスト型)
 ○[商品コード]フィールド(テキスト型)
 ※[商品コード]フィールドは半角英数の羅...続きを読む

Aベストアンサー

クエリのフィールドプロパティでハイパーリンクの設定は出来なさそうなので
商品テーブルに『リンク』フィールドを追加し、データ型をハイパーリンク型に設定。
更新クエリを作成し、SQLビューだと
UPDATE 商品テーブル SET 商品テーブル.[リンク] = "http://shouhin/iteminfo.ashx?code=" & [商品コード];
としてクエリを実行(httpは半角)してリンクフィールドを埋めます。
商品テーブルを開けばハイパーリンクが使えるのでは?試してません。
または、
テーブルは修正せずに選択クエリで新たなフィールドを追加して
リンク:"http://shouhin/iteminfo.ashx?code=" & [商品コード]
とし、これからフォームを作成して
「リンク」コントロールのプロパティの書式タブ中の
ハイパーリンクあり に はい、
ハイパーリンクとして表示 に ハイパーリンクである場合、(2003だとこっちは無いかも)
としてみるとか・・・。これも未検証ですが個人的にはこちらをお勧めしたいです。
以上、Access2010の場合ですが2003でも同様かと思いますがどうでしょね?

クエリのフィールドプロパティでハイパーリンクの設定は出来なさそうなので
商品テーブルに『リンク』フィールドを追加し、データ型をハイパーリンク型に設定。
更新クエリを作成し、SQLビューだと
UPDATE 商品テーブル SET 商品テーブル.[リンク] = "http://shouhin/iteminfo.ashx?code=" & [商品コード];
としてクエリを実行(httpは半角)してリンクフィールドを埋めます。
商品テーブルを開けばハイパーリンクが使えるのでは?試してません。
または、
テーブルは修正せずに選択クエリで新たなフィールド...続きを読む

QMS_AccessからPDFファイルを開く方法?

MS_Accessのメニュー画面(フォーム形式)から、PDFファイルを開く方法を教えて下さい。
因みにパソコン環境は、以下のとおりです。
 OS:WindowsXP_Professional
DB:MS_Access 2003
PDF:Word文書を「いきなりPDF_Professional」の「一括PDF出力」で    作成
以上です。よろしくお願いします。

Aベストアンサー

一番簡単なのはボタンのハイパーリンクアドレスを使う方法でしょう
ボタンを置きハイパーリンクアドレスにpdfの場所を設定してやります

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccessのリンク先を相対パスにしたい

Access2010をつぎのような環境で開発しています。

c:\開発\データ.accdb  テーブル定義と実データ格納
c:\開発\アプリ.accdb  データ.accdbのテーブル定義へのリンクとフォームなど

これを本番のネットワーク環境 “\\network\本番” に設置した場合、
「c:\開発\データ.accdbは無い」旨のエラーになってしまいます。
また、本番環境のパス名はインストール先によって異なります。

Access2010のリンクマネージャでは絶対パスでのリンクしか定義できないようですが、
カレントパスに変更するには、アプリ.accdb を起動時に毎回、動的に変更するしかないのでしょうか?

お教えいただきたくお願いいたします。

Aベストアンサー

データ.accdb と アプリ.accdb が同じフォルダ内にあって
アプリ.accdb のリンク先を
その同じフォルダ内のデータ.accdbに設定するのなら、
VBAになりますが、アプリ.accdb に(例は標準モジュールです)

Sub reLink()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim lnkPath As String
Dim i As Integer

lnkPath = CurrentProject.path
Set db = CurrentDb
For Each tdf In db.TableDefs
If Len(tdf.Connect) <> 0 Then
tdf.Connect = ";DATABASE=" & lnkPath & "\データ.accdb"
tdf.RefreshLink
End If
Next
db.TableDefs.Refresh
End Sub

というのを一回実行すればリンク先が変更されます。

ただ、アプリ.accdb も共有フォルダ内に置いて、みんなが使うのは、
アプリ.accdb が壊れる可能性が高まる。
アプリ.accdb のデータもネットワークを流れるのでパフォーマンスが良くない。
という点でお勧めできません。
アプリ.accdb は各ユーザーに配布して使ってもらった方が吉。
データ.accdb のバックアップも抜かりなく。

データ.accdb と アプリ.accdb が同じフォルダ内にあって
アプリ.accdb のリンク先を
その同じフォルダ内のデータ.accdbに設定するのなら、
VBAになりますが、アプリ.accdb に(例は標準モジュールです)

Sub reLink()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim lnkPath As String
Dim i As Integer

lnkPath = CurrentProject.path
Set db = CurrentDb
For Each tdf In db.TableDefs
If Len(tdf.Connect) <> 0 Then
tdf.Connect = ";DATABASE=" & lnkPath & "\データ.accdb"
tdf...続きを読む

QACCESSで条件によってフォーム上のフィールドの色を変更

一覧形式のフォームがあり、条件によって色を変更したいのですが、その条件というのが下記のような感じです。

フィールドA | フィールドB | フィールドC | チェックボックス
チェックボックスのチェックがあったら、フィールドA・B・Cの色をグレーにする。
チェックがなかったら白いまま。

というものです。
条件付書式だと、色を変更するフィールドそのもののデータを参照にしないといけないんですよね?
フォームオープンのところにVBAをかいてみたんですが、ひとつひとつは認識してないみたいで…。
どのようにすればいいのでしょうか?

よろしくお願いします。

Aベストアンサー

フォームのデザイン画面で3つのフィールドすべて選択し条件付書式画面を表示させる。
条件1のコンボで”式”を選択。
右側の欄に[チェックボックスのコントロール名]=True
と入力し、バケツアイコンでグレーを選択。
(もちろん1フィールドづつ設定してもOK)

Qアクセスのハイパーリンク

アクセスのフィールドにハイパーリンクを設定しましたが、ファイル名(=ID番号)を1件づつ手入力で設定しています。
件数が多いので、HyperlinkPartを使って、更新クエリで一括設定したいのですが、引数”1”だと表示文字列に設定されてしまいます。
ファイル名は引数”2”とのことですが、参照は可能なものの、設定は出来ないみたいで、エラーになってしまいます。
どうしたら、よろしいのでしょうか?
皆様のお知恵を拝借頂きたく、お願い申し上げます。

Aベストアンサー

更新クエリで一括設定ということで
テキスト型の [ファイル名] フィールドの値を
ハイパーリンク型の [ハイパー] フィールドに設定したい、
ということだと思います。

更新クエリの [ハイパー] の「レコードの更新」に
"#" & [ファイル名] & "#"
と設定してください。
フィールド名はご自分のものに読み替えてください。
なお [ファイル名] は、"C:\Sample\ワークシート1.xls" のような
単純なものを想定しています。

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング