EXCEL VBAでACCESSに接続時にエラーが出ます

このQ&Aのポイント
  • EXCEL VBAでのACCESS接続時にエラーが発生し、他のPCで同じマクロを実行すると「実行時エラー'3706'、プロバイダーが見つかりません。正しくインストールされていない可能性があります。」のエラーメッセージが表示されます。
  • 自分のPCではEXCEL VBAでACCESSにADO接続し、データを抽出できますが、他のPCでは接続エラーが発生します。
  • ACCESSのデータは自分のPCからのみ開くことができる設定になっているが、他のPCでもEXCEL VBAで開く方法を教えて欲しいとのことです。
回答を見る
  • ベストアンサー

EXCEL VBAでACCESSに接続時にエラーが出ます

自分のPCの場合は、EXCEL VBAでACCESSにADOで接続時してデータを抽出することが出来ますが、他PCより同じマクロを動かすと「実行時エラー'3706'、プロバイダーが見つかりません。正しくインスツールされていない可能性があります。」のエラーメッセージが出ます。 ACCESSのデータは、EXCEL VBAで自分のPCからのみOPEN出来るようになっているようですが、他のPCからもEXCEL VBAでOPEN出来るようにするにはどうしたら良いのでしょうか。 ACCESSの事は良く分からないので教えてください。 ちなみに、他のPCで直接ACCESSデータを起動するとOPEN出来ます。 宜しく、お願いします。

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

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

コネクションの文字列が提示されていないので何とも言えません。 {みだりに公開もできないものではありますが} コネクションの文字列に問題があるように思います。 つながるPCとつながらないPCで「UDL」をつくって見たらどうでしょう。 空のファイルをEditorで作ってtest.udlという名前で保存 それをダブルクリックすると接続を確立するためのプログラムが立ち上がりますから そこでプロバイダーなどを選んで「接続テスト」がOKになるようにします。 保存したあとそのファイルをEditorでみると接続文字列が分かると思います。 ウイザード代わりに使うということです。 その後でそれぞれのUDLの内容を比較したら何らかの回答が得られるのではないかと思います。

pegasusv
質問者

お礼

回答有難うございました。 自分のPCも他のPCもoffice2003を使用しているのですが、原因が分かりました。 Provider=Microsoft.ACE.OLEDB.12.0;とoffice2007の設定としていました。教えて頂いた方法で、Provider=Microsoft.Jet.OLEDB.4.0;に変更して他のPCでも動作するようになりました。 自分のPCでは何故動作したかは良く分かりませんが、excel2007のファイルコンバータをインスツールしていたので動作したのかも知れません。 「接続テスト」の手法を教えて頂き、大変参考になりました。 なお、Microsoft.ACE.OLEDBとMicrosoft.Jet.OLEDBの違いを教えて貰えれば嬉しいのですが。 宜しく、お願いします。

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.2

>Microsoft.ACE.OLEDBとMicrosoft.Jet.OLEDBの違いを教えて貰えれば嬉しいのですが。 私もその辺は「試行錯誤」に近いものがあります。 SQl-ServerにつなぐときにクライアントがXpとNtがあってうまくいかなくて悩んだ挙句UDLを使う方法を探して何とか作っちゃったという状況なので。

pegasusv
質問者

お礼

皆さんどのように知識を得ているのかなと思っていましたが、試行錯誤しているのですね。 でもUDLを使う方法は、有益ですね。 色々と有難うございました。

関連するQ&A

  • VBA:実行時エラー

    ExcelシートをテーブルとしてADO接続し、SQLでデータを抽出する仕組みを組んでいます。 特定のSQLで2回目の呼び出し時に「抽出条件でデータ型が一致しません。」とエラーになります。 1回目呼び出し時にはエラーにはならず正常にデータを抽出できているのですが、2回目呼び出し時のみエラーとなります。 抽出条件の引数はVariant型、テーブルの抽出対象項目は数値です。 vba初心者で恐れ入りますが、ご教授願います。

  • Access VBA実行中にエクセルが開かない

    すみません、お世話になります。 Access VBA初心者なので言葉足らずかも知れません。 申し訳ありません。 Access VBAで画面からDBの値を抽出して画面に表示、 プログラム上でその表示データをエクセル出力するというものを 作成しています。 エクセルは新しいブックを作成してデスクトップに貼り付けるように 指定しています。 エクセ出力後、Accessを終了せずに作成したエクセルを開こうとすると エクセルが最後まで表示できません。 Accessを終了するとエクセルはちゃんと表示されます。 何かAccessのほうで設定しなくてはいけないのでしょうか? それともプログラムで制御しなくてはいけないのでしょうか? まったく想像がつきません。 よろしくお願いします。

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • AccessでVBAって何に使えるんでしょうか?

    僕はExcelのVBAで長年仕事してきましたが、AccessでもVBAが使えるのは知っていますが、どんなことに使うのかがイメージ湧きません。 AccessってExcelだとVBAでマクロ組まないとできないような機能をデフォルトで持っているような感じじゃないですか? レポートみたいな画面も出せるし、Excelデータから普通に取り込むこともできるし、これ以上、何を自動化するのかな?と。 求人情報などでたまにAccessのVBAを使える人というのが条件にあったりするんですが、こういった仕事って何ができることを期待してるのでしょうか?

  • ADOでデータを送ってる最中はアクセスで検索やテー

    読み取り専用のエクセルファイルで エクセルのvbaでADOでエクセルデータをアクセスに転記してる時に アクセスでフィルタをかけてるとフリーズします。 ADOでデータを送ってる最中は アクセスで検索やテーブルへのアクセスはできないのでしょうか?

  • EXCEL VBAでACCESSのデータを扱いたい(初心者です)

    EXCEL VBAを勉強している者です。VBAでコードを書いてACCESSのデータを抽出してEXCELでその抽出したデートを加工したい(すべてVBAでコードを書いて処理)のですが、よくわかりません。EXCEL VBAの書籍を数冊勉強したのでEXCELの中だけでデータを作ったり、加工したりは理解できているつもりです。ただ、今まで読んだ書籍には外部データベースに接続して、その後、処理をするといったことが書いてなかったので、まったく知識がありません。そこで、ACCESSへの接続の仕方、操作の仕方などについて、やさしく(私みたいな初心者でも理解できる)説明してあるサイトまたは書籍をご存知の方、お教えください。特に、今のところ、最初の接続のところがわからないので接続について詳しく説明してあるサイトなどお願いします。

  • 実行時エラー -2147217887

    一つのアクセスファイルに エクセルからADOでデータを追加しているのですが その外套のアクセスファイルも捜査をしているタイミングで 実行時エラー -2147217887 他のユーザー が同じデータに対して同時に更新を試みているので、 プロセスが停止しました。 と表示されますが このエラーを表示せず、エクセルADOを優先されるには どういうコードにすればいいですか? ちなみに一度中断モードにして 同じコードを再度実行しようとすると 実行時エラー -2147217887 Update または CancelUpdateメソッドには、対応するAddNewまたはEditメソッドが必要です とエラー内容が変わります。 コードは rs.Open "SELECT * FROM テーブル", cn, adOpenStatic, adLockPessimistic rs.Filter = "番号 = " & 番号 rs("フィールド") = str文字 ’ココでエラー の時です。

  • Access2000のVBAでエクセルマクロ実行

    お世話になります。 Access2000のVBAでエクセルのマクロとアクセルのマクロを 交互に実行したいと思っております。 (1)エクセルのマクロ1を実行 (2)アクセスのマクロAを実行 (3)エクセルのマクロ2を実行 と交互に実行したいのです。 下記のサイトなどを参考に試みたのですが、 http://www.nurs.or.jp/~ppoy/access/access/acX005.html (1)を実行している途中に (2)が進んでしまいます。 どのようにすれば、(1)が終わってから(2)と、前の処理が 終わってから次の処理に進むことが出来るのでしょうか? Access2000のVBAから指示をかけたいので、 Access2000のVBAのコードで教えて頂ければと 思います。

  • EXCEL vbaからACCESSのクエリを開く

    EXCEL2010 WEBを参照してEXCEL VBAでACCESSのクエリを開くマクロを流用しました。 下記がマクロの内容です。 Private Sub Import() Dim db As ADODB.Connection Dim rs As ADODB.Recordset 'ACCDBファイルに接続します Set db = New ADODB.Connection db.Provider = "Microsoft.Ace.OLEDB.12.0" db.Open "C:\work\TEHAI.accdb" 'レコードセットを開きます Set rs = New ADODB.Recordset 'Accessのクエリを開く rs.Open Source:="TEHAI", ActiveConnection:=db If rs.EOF Then MsgBox "抽出した結果、レコードが見つかりません。" Else ' レコードをシートへ貼り付ける Range("A1").CopyFromRecordset rs End If rs.Close Set rs = Nothing Set db = Nothing End Sub これを実行すると、 抽出した結果、レコードが見つかりません。 が表示されます。 ACCESS単体でTEHAIクエリを実行したら、約3万件くらいヒットします。 EXCELマクロから実行したらACCESSからデータをもってこられません。 なぜレコードが見つかりません、 となるのでしょうか? マクロのどこがおかしいのか、教えていただきたく。 ちなみに、もともとの内容から変更したのは db.Open "C:\work\TEHAI.accdb" rs.Open Source:="TEHAI", の2ヶ所だけです。

  • EXCELのマクロでACCESSのカレンダーを使用時のエラー

    EXCELのマクロ(VBA)の中で、一部ACCESSのカレンダー機能を使用しています。 何台か同じ環境のパソコンはあるのですが、一台だけ、次のようなエラーがでます。 何が原因と考えられるでしょうか。 ACCESS2003のランタイムと、EXCEL2003の組み合わせです。 <エラー内容>  「コンパイルエラー。プロジェクトまたはライブラリーが見つかりません」  ということで、EXCELのVBAの画面が開き、Date()の記述の箇所が反転します。 よろしくお願いします。