アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルからアクセスの全てのクエリ名を取得することはできますか?

アクセスからなら
http://www.accessclub.jp/vbakaisetu/58.html
これでできたのですが、
エクセルからアクセスの全てのクエリ名をシートに書き出したいのですが
どうすればいいでしょうか?

エクセルからアクセスのクエリ名を取得するプロシージャーを実行して
変数に格納し、エクセルに戻すしかないのでしょうか?

A 回答 (2件)

Excelのコード表の参照設定で、


Microsoft DAO xx Object Library
にチェックを入れて置いてください。
なお、xxは3.6のような数字です。

Sub test()
  Dim db As DAO.Database
  Dim qdf As DAO.QueryDef
  Dim myQdfName As Variant
  Dim i As Long
  Dim j As Long

  Set db = OpenDatabase("C:\Temp\sample.mdb")
  'クエリ名の取り出し
  ReDim myQdfName(i)
  For Each qdf In db.QueryDefs
    If Left(qdf.Name, 1) <> "~" Then
      ReDim Preserve myQdfName(i)
      myQdfName(i) = qdf.Name
      i = i + 1
    End If
  Next qdf

  'シートへの書き込み
  For j = LBound(myQdfName) To UBound(myQdfName)
    With Worksheets("Sheet1")
      .Cells(j + 1, 1).Value = myQdfName(j)
    End With
  Next j

  Set qdf = Nothing
  db.Close: Set db = Nothing
End Sub


クエリの数は不明なので、一旦配列に取り込み、
それをシートに書き込む仕様にしています。

なお、No1さんのおっしゃるMsQueryからは、肝心なMSysObjectsや
MSysQueriesの列は参照できないようです。Accessのバージョンに
よってことなるかもしれませんが。
    • good
    • 0
この回答へのお礼

できました~
~sq_cフォーム1~sq_cコンボ0
とか言う変なオブジェクトまで取得されちゃうからifするんですね。
このコードはエクセルからでもアクセスからでも実行可能のようですね。

有難うございます。

お礼日時:2013/03/27 20:51

記憶があいまいなのと環境が無いので試せませんので非常に無責任な状態ですが。



隠しオブジェクトのMSysなんとかというテーブルに、定義されてるオブジェクト名が一覧になってませんでしたっけ?
どこかの列の特定の値でオブジェクトの種類が"クエリ"と判断できたような気がします。

MSQueryで接続できるならそれで取得するとか。


違ってたらごめんなさい。
    • good
    • 0
この回答へのお礼

システムオブジェクトのMSysQueriesを見てみましたが
クエリ名らしきものはありませんでした。
むしろ何のデータが入ってるのか理解できませんでした笑

お礼日時:2013/03/27 20:51

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