C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.101563 の関連記事表示

<< 0 >>
■101563  Re[3]: VBからAccessのFormを表示
□投稿者/ 魔界の仮面弁士 -(2023/03/15(Wed) 13:43:12)
    No101560 (こうべ さん) に返信
    > やりたかったことは、VBからAccessのFormを表示し、AccessのFormからリターン後は普通にVBのFormで操作できることです。

    Access Form が閉じた段階で、Access 本体を終了あるいは最小化する処理を仕込んでみては如何でしょうか?
    そうすれば、直前にアクティブだったアプリケーションがアクティブになる気がします。

    Access 本体の終了は Application.Quit メソッドを呼び出せばよいはず。
    最小化なら、CloseWindow API に Application.hWndAccessApp プロパティを渡します。
    (これらの呼び出しを、VBA 側で行うのか VB 側で行うのかは要検討)


    もしも Access 本体はそのままで、VB の Form をアクティブにしたいというのであれば、
    VB 側を再アクティブ化するための処理を、VBA 側か VB 側かのいずれかに盛り込む必要がありそうな予感。


    (案1) 直前までアクティブであった Access 側の VBA で、
     呼び出し元の VB Form をアクティブにする処理を記述する。
     (VBA 側に API コードを盛り込んでいく必要がある)


    (案2) 起動した Access 側の Access.Form オブジェクトのインスタンスを
     VB 側に保持させておき(ActiveForm プロパティなどで得られると思います)、
     Access 側で Form が閉じられたことを、VB 側が Access.Form のイベント
     (Close イベントあるいは Unload イベント)を捉えて、VB 側が自身の Form を
     アクティブにするように記述する。


    > AppActivate、SetForegroundWindowでVBのFormを最前面に表示しようとしましたが、できなかったので、TopMostを使ってみました。
    > 最前面に表示されたことで、てっきりうまく実行できていると思っていましたが、アクテイブだったのはAccessでした。
    SetForegroundWindow する前に、アクティブだった側(Access)が、非アクティブな相手(VB)に対して AttachThreadInput を呼び出してみてはどうでしょう。
記事No.101547 のレス /過去ログ177より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -