|
>実際のデータを見たいときに
つまりデータを更新するなどの操作はせず、単に見るだけでいいのですね ?
それなら、ご希望の内容に最も沿うと思われる方法を提案します。
まず、ハイパーリンクの設定に関しては、HYPERLINK関数を使った数式を
埋めるのでなく、ワークシートメニューの「挿入」「ハイパーリンク」を
選択して下さい。このとき、当然ですがmdbのデータを落としてくるシート
とは別のシートにハイパーリンクを挿入する必要があります。
で、出てきたダイアログの"表示文字列"に仮に"業種別平均株価データ"
(↓のサンプルの場合)などと、テーブル名を説明するような文字列を入れます。
"ファイル名またはWebページ名"の窓には、HYPERLINK関数の第一引数と同様に、
リンク先を示す文字列を入れます。
そしてVBEを開いて、メニューの「ツール」「参照設定」で Microsoft DAO 3.6
Object Library にチェックを付け、ハイパーリンクを設定したシートの
シートモジュールに以下のようなマクロを入れます。
当然ですがマクロ内の定数 myMdbFile は実際のmdbファイルのフルパスに書き換え、
OpenRecordset の引数も実際のテーブル名に書き換えておいて下さい。
あと飛んでいくリンク先のシート名に合わせて
> With Worksheets("Sheet1")
のところも適当に書き換えて下さい。
そこまで準備ができたらハイパーリンクをクリックすれば、リンク先シートのA1から
1行目のフィールド名に続いて全レコードが入力・表示されます。
なお、項目行+レコード数が、シートの最大行数を超えないように注意して下さい。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim myCurDb As DAO.Database
Dim myCurRset As DAO.Recordset
Dim I As Long
Const myMdbFile = _
"C:\Documents and Settings\User\My Documents" & _
"\DBFiles\マクロ経済指標.mdb"
If Target.Name <> "業種別平均株価データ" Then Exit Sub
Set myCurDb = OpenDatabase(myMdbFile)
Set myCurRset = myCurDb.OpenRecordset("業種別平均株価")
With Worksheets("Sheet1")
.Cells.ClearContents
For I = 1 To myCurRset.Fields.Count
.Cells(1, I).Value = myCurRset.Fields(I - 1).Name
Next
.Range("A2").CopyFromRecordset myCurRset
End With
myCurRset.Close: Set myCurRset = Nothing
myCurDb.Close: Set myCurDb = Nothing
End Sub
|
|