OS:Windows7でのフォーム開くコーディングで「ActiveXコンポーネントはオブジェクトを作成できません」というメッセージが表示される場合の対処方法

このQ&Aのポイント
  • Windows7の環境でAccessのフォームを開くためのコーディングで「ActiveXコンポーネントはオブジェクトを作成できません」というエラーメッセージが表示されることがあります。
  • この問題の原因は、参照設定においてMicrosoft ActiveX Data Object 2.8 Libraryが正しく設定されていないことです。
  • 解決策として、参照設定からMicrosoft ActiveX Data Object 2.8 Libraryを選択し、正しく設定してください。これにより、Windows7環境でもフォームを正常に開くことができます。
回答を見る
  • ベストアンサー

OS:Windows7

OS:Windows7 ACCESS:2003 ランタイム SQLServer2000 mdbのフォームからadpのフォームを開くために以下のコーディングをしています。 Dim strAppPath As String Dim strDBPath As String strAppPath = "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" strDBPath = """C:\Program Files\SSSS\sugimura05ADP.ADP""" Shell strAppPath & " " & strDBPath, vbMaximizedFocus Dim obj As Access.Application Set obj = GetObject("C:\Program Files\SSSS\sugimura05ADP.ADP") obj.DoCmd.OpenForm "売上伝票入力" OSがWindowsXPの場合、問題なく動作するのですが、 Windows7の場合、以下のようなメッセージが出て、動作しません。 「ActiveXコンポーネントはオブジェクトを作成できません。」 参照設定で Microsoft ActiveX Data Object 2.8 Libraryを選択しています。 どなたかご教授をお願いいたします

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

  • ベストアンサー
  • crossgate
  • ベストアンサー率65% (78/119)
回答No.1

参考にしてみてください。 http://support.microsoft.com/kb/319844/JA/ http://support.microsoft.com/kb/882110/ja XPがOKで7がNGならユーザ権限のような気もしますが。。。

teburon
質問者

お礼

ご回答ありがとうございます。 その後問題を切り分けましたが、 問題がWindows7では無く、インストールされているOfficeのバージョンにあることが分かりました。 Accessのruntimeバージョンが2003,Officeのバージョンが2007です。 Office2007をアンインストールすると正常に動作します。 同居させた時に正常に動作するようにDAO設定や、参照設定を変えながら試行錯誤しています。 今回はご回答ありがとうございました。

関連するQ&A

  • Access 開くときに自動で参照設定

    いつもお世話になっております。 Accessで参照設定を自動でする下記コードで、 "C:\Program Files (x86)\Microsoft Office\Office" & sansyou & "\MSOUTL.OLB" がない場合は "C:\Program Files\Microsoft Office 15\root\office15" & sansyou & "\msoutl.olb" をセット という風な条件を付けたいのですが、添削をお願いできますでしょうか。 Dim A As Object Set A = CreateObject("Outlook.Application") Dim sansyou As String sansyou = Left(A.Version, 2) Dim Ref As Reference Set Ref = References.AddFromFile("C:\Program Files (x86)\Microsoft Office\Office" & sansyou & "\MSOUTL.OLB") Set Ref = Nothing ちなみに、閉じるときに Application.References.Remove References("Outlook") で、参照設定のチェックを外しています。 バージョンがそれぞれ異なるPCでOutlookの参照設定チェックをONOFFするコードです。 よろしくお願いします。

  • Shell関数を使って、ファイル名を指定して開くこ

    オフィス2003です。 Sub サンプル1() Dim strExcelPath As String strExcelPath = "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" Shell strExcelPath, 1 End Sub なら空のエクセルアプリケーションが開けます。 でも、 Sub サンプル2() Dim strExcelPath As String strExcelPath = "D:\ファイル.xls" Shell strExcelPath, 1 End Sub だと、 “プロシージャの呼び出し、または引数が不正です。“ と言うエラーになります。 Shell関数を使って、ファイル名を指定して開くことはできないのでしょうか?

  • Access2000vbaで、shell関数で起動させたExcellを終了する方法を教えてください。

    Access2000vbaで、shell関数で起動させたExcellを終了する方法を教えてください。 以下のように、shell関数で、既存のExcelファイルを起動させました。 どうすれば、Excelファイルを終了できますか? 宜しくお願いします。 Dim fl_name As String fl_name = "C:\XE2.xls" Shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE " & fl_name, vbNormalFocus

  • 親フォルダを取得したい

    Sub test1() Dim mystr As String mystr = ActiveWorkbook.Path End Sub これだと、現在のアクティブブックのファイル名以外のパスが取得できるのですが、 mystr = ActiveWorkbook.Parent.Path にすると、なぜか C:\Program Files (x86)\Microsoft Office\Office14 が返ります。 ActiveWorkbook.Path の返り値が C:\新しいフォルダー だとしたら、 C: のみが取得されるコードが知りたいのですが、 ActiveWorkbook.Parent.Path ではダメなようなので、正しいコードを教えてください。

  • バッチファイルからAccessのマクロを操作する。

    コマンドでACCESS2002のファイルを開けてそのファイルのマクロを操作するバッチファイル作成したいのが、よくわかりません教えてください。 "C:\Program Files\Microsoft Office2002\OFFICE\MSACCESS.EXE" "C:Sample\text.mdb" /x "mcr_test" ではマクロが動きません。

  • ACCESS2007のコマンドライン引数に関して

    いつも大変お世話になっております。 コマンドプロントからaccessファイルを起動させて、/cmd以下の数字を起動したフォームのテキストボックス内に入れたいのですが、なかなかうまくいきません。 起動コマンドは、 "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" C:Users\admin\Desktop\text.accdb /cmd 1 として、アクセスファイルの起動には成功しています。 つたない説明ですが、ご教授頂ければと思います。

  • CreateObjectでエラー発生(Excel2007が悪い?)

    下記の環境、プログラムで"ActiveXコンポーネントを作成できません。"のエラーが出て困っています。 毎回ではなく、「1回目はエラーで、2回目以降は出ない」「たまに出る」など、動作が一定ではありません。 Excel2003では問題なく動作するので、Excelのバージョンを変更しようかとも考えています。(高価で入手しにくいので踏み切れずにいます。) Excel2007とVBの問題なのでしょうか? プログラムの変更で解決すればいいのですが…。 ご教示ください! ****** 環境 ****** OS:WindowsXP Professional Ver.2002 SP2 (Microsoft .NET Framework 2.0 Configuration) Excel:Microsoft Office Excel 2007 言語:VB2005 SP1 参照先:Microsoft Excel 12.0 Object Library ****** プログラム ****** Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheet1 As Microsoft.Office.Interop.Excel.Worksheet Try xlApp = CType(CreateObject("Excel.Application"),Microsoft.Office.Interop.Excel.Application) xlBook = CType(xlApp.Workbooks.Open("C:\File\OutPutSheet_1System.xls"),Microsoft.Office.Interop.Excel.Workbook) xlSheet1 = CType(xlBook.Worksheets(1),Microsoft.Office.Interop.Excel.Worksheet) ↓↓以下省略 (開放は行っています。)

  • コマンドプロンプトでAcceesを起動させたい

    コマンドプロンプトでAccessを起動してクエリ(選択)も起動したいのですが可能でしょうか? Acceesの起動は、 "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" サーバー名\○○.mdbで出来ました。 その後、クエリ(選択)も起動させたいのですが方法がわかりません。 よろしくお願いします。

  • エクセルをアクティブにしたい

    エクセルとアウトルックを立ち上げた状態でエクセルのシートにコマンドボタンを設置して、 ***************************************************** Private Sub CommandButton1_Click() '参照設定:Microsoft Outlook ○.○ Object Library Dim ObjOut As Outlook.Application Dim OutMail As MailItem Dim myNaSp As Namespace Dim FolderName As String Dim rc As Long Set ObjOut = GetObject(, "OutLook.Application") Set OutMail = ObjOut.CreateItem(olMailItem) Set myNaSp = GetNamespace("MAPI") FolderName = myNaSp.PickFolder MsgBox "「" & FolderName & "」が選択されました。" rc = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" & ActiveWorkbook.FullName, 1) AppActivate rc Set myNaSp = Nothing End Sub ***************************************************** をすると、アウトルックの「フォルダー選択」ダイアログが開くのですが、 フォルダを選択した後に、エクセル画面に戻りません。 手作業でエクセル画面に戻す(アクティブ)にするのですが Shellの部分で、「ファイルが見つかりません」となります。 rc = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", 1) に変更すると、エラーにはならないのですが、 新規のブックが立ち上がってしまいます。 エクセルのシートのボタンを押したら、アウトルックのフォルダ選択画面を出して 選択後、元のエクセルシートをアクティブにさせたいのですがどうすればいいでしょうか? Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") AppActivate xlApp を追加してもダメでした。 ご教授よろしくお願いします。

  • 別のMDBのフォームを開く操作をしているのですがエラーになってしまいま

    別のMDBのフォームを開く操作をしているのですがエラーになってしまいます (Access2003 SP3を使用) Function keisan() Dim obj As Access.Application Dim db_name As String Dim tmpDB As Database Dim tabname As String Dim tdynaset as Recordset Dim KeisanKekka as Boolean ’MDBのフォームを開く db_name="c:\keisan.mde" Set obj = GetObject(db_name) obj.DoCmd.OpenForm "計算", acNormal, , , , acDialog obj.Application.Quit Set obj = Nothing '計算結果をもってくる Set tmpDB = OpenDatabase(db_name)'ここでエラー**** Set tdynaset = tmpDB.OpenRecordset("select 計算結果 from データ", dbOpenSnapshot, dbForwardOnly) KeisanKekka = Nz(tdynaset.Fields(0), False) tdynaset.Close Set tdynaset = Nothing tmpDB.Close Set tmpDB = Nothing End Function これで1回目は上手くできるのですが2回目からOpenDatabaseのところでエラーになってしまいます 「実行時エラー3045 c:\keisan.mdbは既に使用されているので、使用できませんでした」 GetObjectの解放はしているのになぜこのようなエラーがでてしまうのでしょうか・・・ 別のPCでもやってみたのですが同じエラーが起こりました どうかよろしくお願いします