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

エクセルもアクセスも起動している状態で、エクセル側でマクロを実行してアクセスのとあるテーブルやクエリのレコード数を取得したいのですがどうしていいのかわかりません。アクセス自体での取得方法もわかりません。SQLというのを使わないと不可能なのでしょうか?
VBAで可能でしたらどういったコードを書けばいいのでしょうか?
よろしくお願いします。

A 回答 (4件)

ADOを使用した場合です。


VBEのツール→参照設定でActiveX Data Objectsにチェックが入っている事を確認して下さい。

また、ACCESSのファイル名をDB.mdbとし、テーブルをtblSampleとします。

Sub Sample()

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim SQL As String

Set CN = New ADODB.Connection

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\DB.mdb;"

Set RS = New ADODB.Recordset

SQL = "SELECT COUNT(*) AS RecCount FROM tblSample;"

RS.Open SQL, CN, adOpenStatic, adLockReadOnly

Debug.Print RS.Fields("RecCount")

RS.Close
Set RS = Nothing

CN.Close
Set CN = Nothing

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2008/08/13 09:42

ADOもあります。



参考URL:http://home.att.ne.jp/zeta/gen/excel/c04p02.htm
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2008/08/13 09:41

ExcelのVBA画面で DAO を参照設定で追加してください


後はAccessの記述方法と同じです。
ロックなどを考慮しなくて良いなら下記例で対象mdb、テーブル名を変更すれば出来ますよ

Sub Macro1()
Dim DB As Database
Dim RS As Recordset

Set DB = OpenDatabase("C:\Documents and Settings\USER1\My Documents\TestDB.mdb")
Set RS = DB.OpenRecordset("SELECT COUNT(*) as Kensu FROM TestTBL", dbOpenForwardOnly)

'Cells(行, 欄)
Cells(1, 1) = RS!Kensu

RS.Close
Set RS = Nothing
DB.Close
Set DB = Nothing

End Sub

参照設定に DAO を入れるとデータベース系のヘルプも出来るようになります。
後はヘルプもしくはVBAの参考書で勉強してくださいね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2008/08/12 16:18

CreateObject("Access.Application") でアクセスオブジェクトセットしてあとはクエリを開くなりモジュール呼び出すなりできるんじゃないかな?


逆は良くやるけどエクセルからアクセスってのはやったことないなあ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2008/08/12 11:52

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

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


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