こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA について教えて下さい

Excel VBA でAccess接続します

今までは

Sub aaa()
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;"

End Sub

のように使っていましたが(単一プロシージャ)

Set cn = CreateObject("ADODB.Connection")

の部分をパブリックにして

Sub bbb()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;"

End Sub

別のプロシージャからも、使えるためには

パブリックにするための方法を教えて下さい

投稿日時 - 2013-12-09 23:11:58

QNo.8380157

困ってます

質問者が選んだベストアンサー

回答1の補足です。

その場合は
メニューの挿入→標準モジュール
で標準モジュールに以下を書きます。
Option Explicit
Public cn As Object

すると他のシートや追加モジュールからも使えます。
シートモジュールに上記を書いても他のモジュールでは使えないですね。

投稿日時 - 2013-12-10 16:49:39

お礼

ありがとうございます

助かりました

投稿日時 - 2013-12-10 17:46:38

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

単に、何度も
Set cn = CreateObject("ADODB.Connection")
を記述する必要を簡略化したいということですよね

同じモジュールでまとめてあるとします。
Option Explicit
Dim cn As New ADODB.Connection
Const CONNECT1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Const CONNECT2 = "aaa.mdb;"
Const CONNECT3 = "bbb.mdb;"

Sub aaa()
cn.Open CONNECT1 & CONNECT2
・・・・
End Sub

Sub bbb()
cn.Open CONNECT1 & CONNECT3
・・・・
End Sub

動作までは確認していません。
Option Explicitで検索してみてください。

投稿日時 - 2013-12-10 16:02:01

お礼

ありがとうございます

投稿日時 - 2013-12-10 17:47:01

ANo.1

これでいかがでしょう。

Option Explicit
Dim cn As Object

Sub aaa()
Set cn = CreateObject("ADODB.Connection")
End Sub

Sub bbb()
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;"
End Sub

投稿日時 - 2013-12-10 04:23:07

補足

ありがとうございます

同一モジュール内の関数aaa(),bbb()

で可能でした

さらに教えてもらえるのなら

関数aaa(),bbb()が別モジュールにある場合でも

cn を共通に使える方法をお教えください

投稿日時 - 2013-12-10 15:39:20

あなたにオススメの質問