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

解決済みの質問

セットアップ先のPCでエラー

VB2005の初心者です。
VB2005でAccess2003を制御するプログラムを書いているのですが
Dim oAccess As Access.ApplicationClass
Dim strDir As String = Application.StartupPath
oAccess = CreateObject("Access.Application")
With oAccess
.Visible = False
.OpenAccessProject(strDir & "\Report.adp")
.DoCmd.OpenReport("r_EnvelopePrint", Access.AcView.acViewNormal)
.CloseCurrentDatabase()
.Quit()
End With
oAccess = Nothing

プログラムを書いているPCではうまく動くのですが、他のPCにインストールして動かすと
「System.InvalidCastException: 型 'System.__ComObject' の COM オブジェクトをクラス型 'Microsoft.Office.Interop.Access.ApplicationClass' にキャストできません。CLR に入り、IProvideClassInfo をサポートしていない COM コンポーネント、または登録された相互運用機能アセンブリを含まない COM コンポーネントは、__ComObject 型にラップされます。この型のインスタンスを他のクラスにキャストすることはできませんが、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。」
というようなエラーメッセージが出てうまく動きません。
もちろんインストール先のPCにもAccess2003は入っています。何が悪いのか見当が付かず困っています、何か良い解決方法があればお教え願えないでしょうか。

投稿日時 - 2006-09-12 19:55:05

QNo.2402054

すぐに回答ほしいです

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

oAccess = CreateObject("Access.Application")
でエラーが起きてると思います。

私はAccess2000しかなく分かりませんが
少なくともAccess2000では
Dim oAccess As Access.Application
と宣言するようです。

投稿日時 - 2006-09-12 22:15:55

補足

すいません。ご指摘の通りでした。
>Dim oAccess As Access.Application
>と宣言するようです。
宣言しているつもりが
Dim oAccess As Access.ApplicationClass
と宣言していました。m(__)m
ありがとうございました。

投稿日時 - 2006-09-13 12:10:19

お礼

早速のご意見ありがとうございます。
>oAccess = CreateObject("Access.Application")
>でエラーが起きてると思います。
私もそうではないかと思っているのですが。

>Dim oAccess As Access.Application
>と宣言するようです。
これは宣言しているんですが・・・
プログラムを書いているPCではまともに動くんですよ・・・。

投稿日時 - 2006-09-13 10:33:37

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

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

回答(1)

あなたにオススメの質問