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は入っています。何が悪いのか見当が付かず困っています、何か良い解決方法があればお教え願えないでしょうか。
No.1ベストアンサー
- 回答日時:
oAccess = CreateObject("Access.Application")
でエラーが起きてると思います。
私はAccess2000しかなく分かりませんが
少なくともAccess2000では
Dim oAccess As Access.Application
と宣言するようです。
この回答への補足
すいません。ご指摘の通りでした。
>Dim oAccess As Access.Application
>と宣言するようです。
宣言しているつもりが
Dim oAccess As Access.ApplicationClass
と宣言していました。m(__)m
ありがとうございました。
早速のご意見ありがとうございます。
>oAccess = CreateObject("Access.Application")
>でエラーが起きてると思います。
私もそうではないかと思っているのですが。
>Dim oAccess As Access.Application
>と宣言するようです。
これは宣言しているんですが・・・
プログラムを書いているPCではまともに動くんですよ・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Windows 10 Windows Updateの更新ができない場合に初期化 3 2023/01/18 20:00
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Windows 10 VirtualBoxで起動できないゲームがあります 2 2022/12/17 06:13
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LV_ITEM構造体のメンバlParamに...
-
エクセルVBAで、条件に一致する...
-
3年間同じクラスになる確率
-
インスタンス参照でアクセスで...
-
c++,ある関数のクラスから別の...
-
ワイルドカード<?>と型パラメー...
-
「天声人語」をインターネット...
-
DataGridViewでセルクリックイ...
-
string formatについて
-
クラス間でのデータ参照
-
変数の参照でエラーが出てしま...
-
VBA 同じ名前のオブジェクトを...
-
String型の日付(2005/11/25)の...
-
生成したインスタンスを削除す...
-
コマンドプロンプト実行後に画...
-
BufferedWriterのcloseメソッド
-
「自作クラスの型」にキャスト...
-
java eclipse 型に解決できません
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LV_ITEM構造体のメンバlParamに...
-
DataGridで特定の行のスタイル...
-
Varianntメモリリークについて
-
python3 各引数の意味と、引数...
-
4バイト整数を使っているため
-
DirectX C++/CLIで作成したDLL...
-
VC++.NET2003でユーザー関数内...
-
MFCで水平スクロールバー
-
ExcelのVBAについて
-
DirectInputが上手く動きません;
-
VB2008にてWEBアプリケーション...
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
「タイプ初期化子が例外をスロ...
-
河合塾のクラス分けについて
-
同じクラスにならない確率を教...
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
3年間同じクラスになる確率
-
private static という変数の修飾
おすすめ情報