- PR -

VB.NET→ACCESS連携

1
投稿者投稿内容
青@
会議室デビュー日: 2004/02/22
投稿数: 10
投稿日時: 2004-04-22 23:02
 VB.NETからACCESSのレポートやマクロを呼び出したいのですが
うまくいきません。
(実行するOFFICEの環境ですが、ACCESSのランタイムが入っています)

ランタイムしか入ってない環境だとCreateObjectが使えないと
Webで書いてあったのでGetObjectを使おうと思いましたがエラーとなります。
Shell関数もうまくいきません。

★とりあえずですが、VBからACCESSのレポートやマクロを
 呼び出す一般的な方法を教えてください。泣
 出来れば引数の指定があるサンプルコードがあると助かります・・・

質問の内容が中学生レベルで大変申し訳ございません!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-23 09:34
引用:

青@さんの書き込み (2004-04-22 23:02) より:
 VB.NETからACCESSのレポートやマクロを呼び出したいのですが
うまくいきません。


 過去の投稿より、ご自分の立てたスレッドしかチェックしていないと判断します。
 これですが、「うまくいかない」とは、どのような状態なのでしょう?これだけだと、

  1. Accessの起動が出来ない
  2. Accessの起動ができたがマクロの呼び出し方がわからない
  3. Accessの起動ができてマクロの呼び出し方もわかるが、DB接続が出来ない
  4. DB接続も出来たが、望む結果が得られない

と、いくつもパターンがあります。これを書いておいてくだされば、私のこの投稿は、誰かの「回答」になって、問題が解決できたかもしれない。つまり自分および他人の時間と労力を節約できたと思うのですが、いかがでしょうか?
#ということを、他のスレッドでも書いているのですよ(^o^;


引用:

ランタイムしか入ってない環境だとCreateObjectが使えないと
Webで書いてあったのでGetObjectを使おうと思いましたがエラーとなります。
Shell関数もうまくいきません。


 同じく、どこのページに、どのように書いてあったのでしょう?これだと「使えない」前提条件がわかりませんよね。Access起動の質問は他にもあるので、たとえば上の「スレッドディレクトリ」から「Office→Access」と進めば、40の他の質問があるわけですが、その辺はチェックされていますか?


 質問の仕方は、上司への報告に通じるものがあると考えます。自分の持っている情報をいかにうまく他人に伝えるか、もう少し考えてみてください。
青@
会議室デビュー日: 2004/02/22
投稿数: 10
投稿日時: 2004-04-23 13:44
 お手数をかけますJittaさん

「@IT 会議室」の"検索"機能は活用してますよ!
他にもご指摘がいっぱいあったのですが、まずは質問をし直してみますね。


【問題】
 ACCESSランタイムしか入っていない環境で、VBアプリケーションから
 ACCESSのレポートやマクロを呼び出したいがうまくいきません。


 ●本当は以下の処理が行いたいと思います。

    objTEST = CreateObject("Access.Application")

    'データベースのオープンとファイルパスの指定
    objTEST.OpenCurrentDatabase(filepath:=Application.StartupPath & "\rpt得意先.mdb", Exclusive:=True)

    'プレビューの表示 ※Viewの数字:0=印刷、1:デザイン、2:プレビュー
    objTEST.DoCmd.OpenReport(RePortName:="R_得意先", View:=TextBox1.Text)


  しかし、ランタイムしか入ってない環境では CreateObject を実行しただけで
  「Cannot create ActiveX component.」というエラーになります。


 ●しょうがないので Shell 関数で呼び出そうと思いましたが、
  Shell関数実行時に画面の真中にACCESS起動の小さい画面(?)も登場してしまいます・・・
  この小さい画面が表示されなければ Shell 関数でもOKなのですが。

Shell("E:\Access Runtime\Office10\MSACCESS.EXE " & "E:\TEST\rpt得意先.mdb " _
& "/x TEST_Report_01" _
, AppWinStyle.NormalFocus, True, -1)


【本題】
 ACCESS起動時の小さい画面を表示させずに、なにごともなく印刷処理などが
 出来ないでしょうか?

 (最初に質問した内容とほとんど違う内容になってますが・・・泣)



Jittaさん >
 少しは良くなったでしょうか???
それと参考にしていたページについて指摘されましたが、
(> どこのページに、どのように書いてあったのでしょう?)

 下記のページにてAccessランタイムとCreateObjectについて
書かれていました。
http://www.naboki.net/access/heaven/heaven_01.html


> 質問の仕方は、上司への報告に通じるものがあると考えます。自分の持っている情報をいかにうまく他人に伝えるか、もう少し考えてみてください。

 伝え方については勉強していきたいと思いますので、
 今後も宜しくお願い致します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-23 15:52
サポート技術情報を、Accessカテゴリから、[geetobject]をキーワードに検索

http://support.microsoft.com/default.aspx?scid=kb;ja;238610&Product=accJPN
http://support.microsoft.com/default.aspx?scid=kb;ja;288902&Product=accJPN
http://support.microsoft.com/default.aspx?scid=kb;JA;147816&Product=accJPN
http://support.microsoft.com/default.aspx?scid=kb;JA;210111&Product=accJPN
http://support.microsoft.com/default.aspx?scid=kb;ja;317113&Product=accJPN
http://support.microsoft.com/default.aspx?scid=kb;JA;210132&Product=accJPN
http://support.microsoft.com/default.aspx?scid=kb;ja;317114&Product=accJPN

C#やVB.NET、VB6.0、の情報が入り交じっていますが、こんなところで解決しませんか?
青@
会議室デビュー日: 2004/02/22
投稿数: 10
投稿日時: 2004-05-10 18:17
 ご返答がありました、リンクの情報なども確認して
いろいろと試してみましたが最終的に以下の形にしました。

@VB :処理判別情報をmdbのテーブルに書き込み
AVB :Shell関数にて「@」のmdb呼出し
BACCESS :AutoExec にて「@」の情報読み取り
CACCESS :「B」の情報を元にレポートやプレビューの実行

なんともしょぼい感じでありますが、
今回は上記にて対応することとなりました・・・


Jittaさん返答が遅れ過ぎて大変申し訳ございませんでした!
1

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