###前提・実現したいこと
《環境》
WindowsServer2012 Foundation
Microsoft Office Proffesional Plus 2013 のうち、ExcelとAccessと、ツール類がインストールされています。
その他、SQLServer2012 等がインストールされています。
《問題点》
ExcelのマクロからODBCに接続したいのですが、ActiveXに関するエラーが出てしまい、接続できません。
参照設定で、Microsoft Remote Data Object 2.0 にチェックを入れています。
(場所は、C:\WINDOWS\SysWOW64\msrdo2.0.dll です。)
下記ソースコードの" Set dbEnv = rdoEnvironments(0)" の箇所です。
###発生している問題・エラーメッセージ
実行時エラー '429' ActiveXコンポーネントはオブジェクトを作成できません。
###該当のソースコード
VBA
1Private Sub Worksheet_Activate() 2 3 Dim dbEnv As rdoEnvironment 4 Dim dbCon As rdoConnection 5 Dim dbRes As rdoResultset 6 Dim dbCols As rdoColumns 7 Dim strSQL As String 8 Dim GYO As Long 9 Dim strNENDO As String 10 11 Dim strTokuNM As String 12 13 ' 接続を確立する dsNameは、大文字小文字の区別あり 14 Set dbEnv = rdoEnvironments(0) 15 Set dbCon = dbEnv.OpenConnection(dsName:="ExMADB", ReadOnly:=False, _ 16 Prompt:=rdDriverNoPrompt, Connect:=cnsRDO_CONNECT) 17 18 strSQL = "SELECT * FROM tHOGE " 19 Set dbRes = dbCon.OpenResultset _ 20 (strSQL, rdOpenKeyset, rdConcurValues, rdAsyncEnable) 21 22 ' 先頭レコードからEOFまで繰り返す 23 dbRes.MoveFirst 24 Do Until dbRes.EOF 25 26 Set dbCols = dbRes.rdoColumns 27 strTokuNM = dbCols("colHOGE").Value 28 29 ' 次のレコードに移る 30 dbRes.MoveNext 31 Loop 32 33 ' レコードセット、データベースを閉じる 34 dbRes.Close 35 Set dbRes = Nothing 36 dbCon.Close 37 Set dbCon = Nothing 38 dbEnv.Close 39 Set dbEnv = Nothing 40 41End Sub
###試したこと
- 同じようなコードで、同一マシン上で、VB6.0のプログラムからは動作することが確認できています。VBAとVBでなぜ違いが生じるのか分かり兼ねているところです。
- 別のマシン(WindowsServer2012やWindows7)からは、同じExcelブックを使い、マクロで動作が確認できていますので、このマシン固有の問題があるのではないかと思っています。
- 上記コード以外にも、DAOによるデータ接続のコードを書いて試しましたが同様のエラーが出ました。
- Officeを入れ直すとDLLの登録上の問題がなおることがあるということで、Officeをアンインストールの上入れ直しましたが変わりませんでした。
- PowerShellから、DAO 360.DLLをレジストリに登録しなおしました。それは成功したようでしたが問題点は変わりませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/21 05:34
2016/11/21 05:58
2016/11/21 17:58
2016/11/21 23:35
2016/12/20 15:40