- PR -

VB2005で、Access2000のVBAを操作したい。

投稿者投稿内容
kojiro_i619
大ベテラン
会議室デビュー日: 2006/08/17
投稿数: 100
投稿日時: 2006-08-24 12:52
[quote]
本題とは関係ないですが
引用したいものは↑で囲うと綺麗に引用できますよ
[ /quote ]
でしょうか?
kojiro_i619
大ベテラン
会議室デビュー日: 2006/08/17
投稿数: 100
投稿日時: 2006-08-24 13:02
kojiro_i619さんの書き込み (2006-08-24 12:52) より:
引用:

本題とは関係ないですが
引用したいものは↑で囲うと綺麗に引用できますよ
[ /quote ]
でしょうか?


ですね。分かりました。
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2006-08-24 14:09
善意のアドバイスをよく理解して下さい。

引用:

じゃんぬねっとさんの書き込み (2006-08-24 11:54) より:

とりあえず、別で新しいプロジェクトを作成して、
参照設定に、Microsoft Access xx.x Object Library を追加して、もう一度見て頂けますか?


このアドバイスに対するリプライが

引用:

kojiro_i619さんの書き込み (2006-08-24 12:39) より:

Microsoft Access 9.0 Object Library になるのですが、既に追加しております。更に今、再度追加を行いましたが、オブジェクトブラウザは、変わらないようです。(1台しかなくてすみません)


こうなるってことは、(私なら)「アドバイスする価値なし」と判断して以降は
アドバイスしませんよ。

じゃんぬねっと様って偉大ですね。頭が下がります。
kojiro_i619
大ベテラン
会議室デビュー日: 2006/08/17
投稿数: 100
投稿日時: 2006-08-24 14:11
修正前:Imports Access = Access
修正後:Imports Access1 = Access
上記のようにすると、エラーはでません。

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim oAccess As Access1.ApplicationClass
Dim path As String

path = "c:\kenkou_VB1\MTKNWIN\db1.mdb"

'Start Access and open the database.
oAccess = CreateObject("Access1.Application")
この最後の行で、デバックで、Exceptionはハンドルされませんでした。
ActiveXコンポーネントを作成できません。
です。
kojiro_i619
大ベテラン
会議室デビュー日: 2006/08/17
投稿数: 100
投稿日時: 2006-08-24 14:25
BackDoorさんの書き込み (2006-08-24 14:09) より:
善意のアドバイスをよく理解して下さい。

引用:

じゃんぬねっとさんの書き込み (2006-08-24 11:54) より:

とりあえず、別で新しいプロジェクトを作成して、
参照設定に、Microsoft Access xx.x Object Library を追加して、もう一度見て頂けますか?



について、新しいプロジェクトで確認しました。
Microsoft Access 9.0 Object Libraryを追加すると以下が、オブジェクトライブラリに加わりました。
ADODB
Interop.Access
Interop.DAO
Interop.Office
Microsoft.Vbe.Interop
です。

BackDoorさん、ご指摘ありがとうございました。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-24 14:33
引用:
oAccess = CreateObject("Access1.Application")
この最後の行で、デバックで、Exceptionはハンドルされませんでした。
ActiveXコンポーネントを作成できません。
です。

CreateObjectしろってどこかに書いてありました?(Office系よくしらない。。そういうもの?)
oAccess = New Access1.Application
じゃ、だめですか?

Imports Access1 = Access
しなくても、(Imports自体かかなければ)Access.Applicationとかで定義できないですかね。

[追記]
CreateObjectでつくるなら、「Imports Access1 = Access」があっても、
CreateObject("Access.Application")
じゃないかな。
名前空間を変えてもCOMオブジェクトの名前は変わらないから(で、合ってる?)
(さらに、このままだと型が合わない気がする。)

[ メッセージ編集済み 編集者: べる 編集日時 2006-08-24 14:43 ]
kojiro_i619
大ベテラン
会議室デビュー日: 2006/08/17
投稿数: 100
投稿日時: 2006-08-24 14:50
べるさんのご指摘のように
importしなくて、CreateObjectせずに、oAccess = New Access1.Application
でAccess2000が立ち上がりました。
以下
oAccess.Run("double_check_table1")
として、double_check_table1の名前のフォームを実行したいのですが、モジュール名をしていすると動くのかどうか、、確かめています。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-24 14:58
BackDoor さん、フォローありがとうございます。(*_ _)

引用:

kojiro_i619さんの書き込み (2006-08-24 14:11) より:

修正前:Imports Access = Access
修正後:Imports Access1 = Access
上記のようにすると、エラーはでません。


Imports の機能をご存知の上で使用しているのでしょうか?
等式から見た、左辺と右辺の意味を理解していらっしゃるのでしょうか?
これは、リファレンスを見ればわかることです。

左辺はインポートした名前空間の '別名' にあたります。
左辺と右辺が同じ文字列なのですから、修正前がエラーになるのは当たり前ですよね。

今回の場合、インポートする必要はありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)