• 締切済み

Accessから既存VBexeファイル中のある画面を表示させたい

VB6.0のexeファイルが起動しており、そちらのボタンを押すと、Access単体で作ったシステムを表示させ、 本体のVBのexeファイルをハイドなりで隠して使いたいと思っています。 こちらのやり方はなんとなく分かるのですが、逆に、 Accessを終了させるときに元のVBの呼び出した画面を表示させなくてはなりません。 これはタイミング的にAccessの仕事だと思うのですが、 VBAで可能でしょうか? それとも、VBのほうでできますか? すみませんが、教えてください。

みんなの回答

  • TAK_999
  • ベストアンサー率43% (42/96)
回答No.2

非シグナル状態とは、動作している状態のことです。「シグナル」とはプロ セスに対する停止命令ですので、シグナル状態とは「終了しようとしている 状態」と思ってください。 戻り値でWAIT_TIMEOUTが帰ってくるのは、指定の時間が過ぎてもまだプロセ スが動作している場合です。WAIT_OBJECT_0が帰ってくると、プロセスが終了 状態になったことを示します。 通常、第2引数のタイムアウト時間にINFINITEを指定しますが、これを指定す ると、関数から制御が帰ってこないので、VBのイベントが取れません。その ため、タイムアウト時間に1000(1秒)くらいの値を設定し、呼び出しを繰 り返します。(呼び出しの合間にDoEventsすればVBのイベントが取れます。) Access側から終了したことを通知したいのであれば、DDEによる通信を行う意 外には思いつきません。DDEとはプロセス間の通信方法です。送信側が「終了 するよ!」といったメッセージを送信すると、VB側ではこれがイベントとし て発生し、受信できます。 DDEも使ったことはありますが、「面倒くさい」という記憶だけが残っています.. どちらにしてもVB側のコーディングは必要になります

  • TAK_999
  • ベストアンサー率43% (42/96)
回答No.1

API関数を使えば、VB側から制御可能です。 まず、Accessを起動するために「CreateProcess」を使います。Shellでも 起動はできますが、管理用のハンドルを取得しなければいけないのでこちら を使用します。 次に「WaitForSingleObject」で起動したタスク(Access)を監視します。 これを使えばAccessが完了したことを検知できます。また、管理用のハンド ルが分かっているので、VB側からAccessを強制終了させることもできます。 下記URLにWaitForSingleObjectの説明があります。

参考URL:
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_WaitForSingleObject.htm
dtp-mai
質問者

補足

回答ありがとうございます。 こちらの事情を補足しますと、Accessのほうは私が今から作るのですが、 VB6.0のほうは別の会社の方が作っていて、そちらに お邪魔する形になります。 できればAccessで・・・とも思うのですが。 参照URLを見てまいりました。  「非シグナル状態」というのは、終了させた時という認識でよろしいでしょうか? ある一定の時間、Accessが動いていない場合という判定などは、この関数で分かるのでしょうか? すみませんが、よろしくお願いいたします。

関連するQ&A

  • 【VBA】Accessを終了する前にメッセージを表示したい

    【VBA】Accessを終了する前にメッセージを表示したい Access2003のVBAです。 ユーザがAccessの「×」ボタンをクリックしたときに、 「○○システムを終了します。よろしいですか?」というメッセージを表示したいと考えています。 Excel VBAではExcelを終了させるときのイベントがあったように記憶していますが、 Accessでもそのようなことができるのか、わかりませんでした。 ご存知の方、ご教示願います。

  • access全画面表示されない

    VBからacesssを開くと全画面表示されません。 しかし、フォルダをダブルクリックして開いたり、 空のaccessアプリケーションを立ち上げて、「ファイルを開く」で開くと、全画面表示されます。 【VB】-------------------------------------------- Sub AccOpen() Dim AccApp As Access.Application Dim MyPath As String MyPath = "○○.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True End Sub -------------------------------------------------- 【access】---------------------------------------- Private Sub Form_Load() DoCmd.RunCommand acCmdAppMaximize 'アプリケーションのサイズを最大化する Vbから開くと最大化されない。 End Sub -------------------------------------------------- としています。 アクセス2007、VB2010です。 VBからだと DoCmd.RunCommand acCmdAppMaximizeが無視される理由を教えてください。

  • タスクマネージャーのプロセスから消えなくなる

    こんばんは。 フォームにボタンを設置して、そのボタンをクリックすると 既存のアクセスファイルを開くようにしているのですが そのアクセスファイルを終了させてもタスクマネージャーのプロセスタブの MSACCESS.EXE*32 がいつまでも残ってしまいます。 VBのフォームを閉じると、MSACCESS.EXE*32は消えます。 VBのコードは、 Private Sub cmb_Access_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Access.SelectedIndexChanged Call AccessOpen() End Sub ------------------------------ 標準モジュール Sub Access_Open() Dim AccApp As Access.Application Dim MyPath As String MyPath = "C:\test.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True AccApp = Nothing End Sub です。 VBのフォームから test.accdbを開く→閉じるを繰り返してると、 プロセスが溜まってしまって、アクセスでエラーが起こります。 なので、VBからアクセスを開いて閉じてたら、 プロセスも終了させるようにしたいのですが、 どうすればいいでしょうか? ご回答よろしくお願いします。

  • WEB画面でAccessテーブルを表示したい

    よろしくお願いします。 WEB画面上で入力された年月日範囲を Accessテーブルのデータから表示させたいのですが よろしくお願いします。 【Accessテーブル】 ----------------------------- │ USER │ 年月日 │  内容 │ ----------------------------- │000001│20090401│?????????│ │000002│20090402│?????????│ │000003│20090403│?????????│ │000004│20090404│?????????│ │000005│20090405│?????????│ │000006│20090406│?????????│ │000007│20090407│?????????│ ----------------------------- 【WEB画面】 年月日【20090401】~【20090405】   [表示ボタン] 【Accessテーブル】 ----------------------------- │ USER │ 年月日 │  内容 │ ----------------------------- │000001│20090401│?????????│ │000002│20090402│?????????│ │000003│20090403│?????????│ │000004│20090404│?????????│ │000005│20090405│?????????│ │ │ │ │ │ │ │ │ ----------------------------- 【処理の流れ】 (1)画面上に年月日を入力する (2)ボタンを押す (3)WEB画面に抽出されたデータが表示される 【条件】 ・AccessVBAは使わない ・Accessクエリは使わない ・HTMLファイルにSELECT文で書いて抽出したい 【わからないこと】 ・Accessテーブルのデータを表示する場合にHTMLのFORMは何がいいのでしょうか?   表示されるデータ量は1万件以上の場合があります。 ・ボタンを押したときに表示したいのですがAccessを自動起動して 抽出し表示になるのでしょうか? わからないことだらけですがよろしくお願いします

  • Access2007でFile Searchが使えなくなり大変困ってい

    Access2007でFile Searchが使えなくなり大変困っています。 行いたい内容は以下です。 1.ボタンを押下し、指定したフォルダのファイル一覧画面を出す 2.一覧画面のファイル名に直近のファイル名を表示させる ・Access2000(VBA)でのコード Set fs = Application.FileSearch With fs .lookin =Path  'Path=D:¥system¥file .FileName ="*.xls" If Execute() > 0 Then File = foundfiles(.foundfiles.Count) Else File = "" End With ネットで検索すると、FileSystemObjectで対応できるとのことですが、よく分かりません。 File Searchを使わずにFileSystemObjectを使うとどのように書くのでしょうか。 どうぞ宜しくお願いします。

  • ACCESS2007OFFICEボタン開発者の表示

    Runtimeパッケージを作成するために必要な、ACCESS2007のOFFICEボタン内にある「開発者」項目が消えてしまいました。 次の3つの作業をしてみましたが、表示されません。 (1)Access 2007 Runtime の再実行 (「プログラムの追加と削除」でAccess 2007 Runtime を削除後、MSダウンロードセンターからAccess 2007 Runtime を再DownLoadしてAccessRuntime.exeの実行をして展開) (2)Access 2007 Developer Extensionsの再実行 (「プログラムの追加と削除」でAccess 2007 Developer Extensions を削除後、MSダウンロードセンターからAccess 2007 Developer Extensionsを再DownLoadしてAccessDeveloperExtensions.exeの実行をして展開) (3)コンピュータの再起動 ACCESS2007のOFFICEボタン内にある「開発者」項目を表示するには、どうしたら良いでしょうか? 私がどこかをいじってしまった事が原因と思いますが、困っています。教えて下さい。

  • アクセスから既存のエクセルファイルを開きたい

    やりたいことはタイトルどおりなのですが、やり方自体はネットでしらべて試してみました。 アクセスのフォームにコマンドボタンを作って、そこにアプリケーションの実行を登録して、ボタンを押せばエクセルが開く、というようにしたいと思いました。 たぶんそのやり方は間違っていないと思うのですが、私の場合、肝心なファイルのある場所を指定する、パス名(っていうんですかね?)そういうのをわかっていなくて、 自分の場合、どういうふうに書けばいいのかわかりません。 ちなみに、My Domumentsに入っているオーダー内容という名前のエクセルファイルのため、こういうふうに書きました。 C:\Documents and Settings\ユーザー名\excel.exe My Documents:\オーダー内容.xls これはファイルが見つかりません。というエラーが出て、 C:\Documents and Settings\scm\My Documents:\excel.exe c:\オーダー内容.xls これも同じエラーでした。 何を正せばよろしいのでしょうか?

  • ACCESS VBAでファイルを開くダイアログを表示させたい

    ACCESSのフォームからコマンドボタンを押すことで、 ファイル開くダイアログが表示されて、 そこでファイル名をクリック指定することで、 実際にそのファイルがインポートされるように仕組みを作りたいと思っています。 VBAでどう記述するのでしょうか? 類似ケースの質問内容も調べましたがピンと来るものがありませんでした。 ご存知の方、教えて頂けるとありがたいです。よろしくお願いします。

  • Accessからoracleのストアドプロシージャを呼び出したい。

    はじめまして。 いきなりですが質問させてください。 Accessからoracleのデータベース内に有るストアドプロシージャを使いたい(ボタンを押したらoracleのプロシージャが起動するイメージ)のですがAccessのVBAからはどのようにすれば使用できるのでしょうか? 色々調べて見たのですがVBからのはよく有るのですがVBAからは見つけられませんでした。 ODBCで繋げて呼び出しが出来たらなと思っています 無理ならば他の方法でも構いません。 よろしくお願いします。 使用環境 Access:2002 oracle:Oracle9i Enterprise Edition Release 9.2.0.1.0

  • access2007 プロパティシート 表示されない

    動作環境: OS:WINXP sp2,sp3 OFFICE VER:ACCESS 2007 ACCESS2007を使用し、CSVデータ取り込み、CSVデータ出力の プログラムをVBAで記述しました。 作成したものは テーブル1、フォーム1、モジュール1のみです。 プログラムは完成し、コマンドボタンや画面サイズの変更を行うと デザインビューでフォームを開き、左上の■をクリックしても プロパティシートが表示されません。(プロパティシートボタン、フォーム右クリックのプロパティも反応なし。) 作成したプログラムに問題があるかと思い、サンプルでaccessのデータを作成しましたが、こちらも反応がありません。 再インストールでも改善せず。 ↓ レジストリ:ACCESSと記述されているものを削除し 再インストールすれば、再びプロパティ表示されます。 ですが、再度、別ファイルなどVBAの作業を行いしばらく行うと また表示されなくなります。 レジストリを操作するようなプログラムではありません。 microsoftのバグですか? ご教授お願い申し上げます。