Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


34804 / 76732 ←次へ | 前へ→

【47133】Re:ハイパーリンクでMDBファイル内の指定したテーブルを開きたい
発言  ichinose  - 07/3/1(木) 23:11 -

引用なし
パスワード
   こんばんは。

susan さんの仕様で考えてみました。

新規ブックにて試してください。

関数名は Myhyper

機能   mdbファイルの指定されたテーブルにリンクする

呼び出し形式
     Myhyper(AccessDbpath,Tblnm,dsptxt,[opt])
     input AccessDbpath mdbファイルのフルパス
         Tblnm     表示するテーブル名 
         Dsptxt    表示文字列
         opt      内部で使用するパラメータ(指定不可) 


使用例
   
 =Myhyper("D:\郵便番号データベース\yubin.mdb","郵便番号","郵便番号データ")

 =Myhyper(a1,a2,a3)
 ↑この場合は、セルA1,A2、A3に対応する情報が入っているとする


こんな関数を考えます。


まず標準モジュールに

'====================================================================
Option Explicit
Function Myhyper(AccessDbpath As Variant, Tblnm As Variant, Dsptxt As Variant, Optional opt As Long = 0) As Variant
  Dim rng As Range
  If opt <> 1 Then
    Set rng = Application.Caller
    With rng
     .Hyperlinks.Add Anchor:=rng, Address:="", TextToDisplay:=""
     End With
    Myhyper = Dsptxt
  Else
    Myhyper = Array(AccessDbpath, Tblnm)
    End If
End Function


別の標準モジュールに

'==============================================================
Private Declare Function ShowWindow Lib "USER32" _
       (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOWMAXIMIZED = 3
'====================================================================
Sub openmdbtabl(mymdbpath As Variant, Tblnm As Variant)
   On Error Resume Next
   With CreateObject("access.application")
    .Visible = True
    ShowWindow .hWndAccessApp, SW_SHOWMAXIMIZED
   .OpenCurrentDatabase mymdbpath
   .DoCmd.OpenTable Tblnm
   .DoCmd.Maximize
   End With
   On Error GoTo 0
End Sub


thisworkbookのモジュールに
'=============================================================
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Dim frm As String
  Dim fend As Long
  Dim myarray As Variant
  frm = Left(Trim(Target.Range.Formula), 8)
  If UCase(frm) = UCase("=myhyper") Then
    fend = InStrRev(Trim(Target.Range.Formula), ")") - 1
    myarray = Application.Evaluate(Left(Trim(Target.Range.Formula), fend) & ",1)")
    Call openmdbtabl(myarray(LBound(myarray)), myarray(UBound(myarray)))
    End If
End Sub


上記のマクロ設定後に

適当なセルに

例えば、

=Myhyper("D:\郵便番号データベース\yubin.mdb","郵便番号","郵便番号データ")

と指定してみてください(勿論、mdbファイルのパスやテーブル名は実際に存在する
情報をしていします)。


指定後に上記の関数を設定したセルをクリックしてみてください。

指定されたテーブルが表示されるはずなんですが・・・。


試してみてください

尚、Excel2002、Access2002で確認しました。

1 hits

【46924】ハイパーリンクでMDBファイル内の指定したテーブルを開きたい susan 07/2/21(水) 23:10 質問
【46949】Re:ハイパーリンクでMDBファイル内の指定し... Kein 07/2/22(木) 23:01 発言
【46952】Re:ハイパーリンクでMDBファイル内の指定し... ichinose 07/2/23(金) 7:59 発言
【47106】Re:ハイパーリンクでMDBファイル内の指定し... susan 07/2/28(水) 23:48 お礼
【47118】Re:ハイパーリンクでMDBファイル内の指定し... Kein 07/3/1(木) 16:14 回答
【47133】Re:ハイパーリンクでMDBファイル内の指定し... ichinose 07/3/1(木) 23:11 発言
【47176】Re:ハイパーリンクでMDBファイル内の指定し... ichinose 07/3/3(土) 7:56 発言

34804 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free