プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

今、Vbaを使ってAutoCad LTに作図(Scriptファイルを使う)するプログラムを作成中ですが
終了後にUserformを前面に出したいと思っています
先日は作図前にAutoCAdを前面に出す方法を教わったのですが今度はExcelのUserformを
前面に出して次のステップに行けるようにしたいと考えています

今のプログラムは
Me.Hide
'...Excelを最小化
Application.WindowState = xlMinimized
Application.Wait [Now() + "00:00:02"] '...2秒待つ
'...AutoCadを前面に
AppActivate "Autodesk AutoCAD"

check = ShowWindow(dwghwnd, 3)
SetForegroundWindow dwghwnd '...最前面表示

     (作図)

Me.Show

になっています
Me.ShowのところでUserFormを前面に出したいのですが
分かりましたら教えてください

以上、よろしくお願い申し上げます

A 回答 (1件)

こんにちは



再現環境がないので、想像だけでの回答ですが・・

>SetForegroundWindow dwghwnd '...最前面表示
SetForegroundWindowを使っているってことは、APIを利用しているってことですよね?
・・もしそうであるなら、そのフォームのハンドルを取得して、同様に前面に表示すれば済むのではないでしょうか?

ただし、SetForegroundWindowの場合、条件が合わないと最前面にはならない場合があるようです。
https://learn.microsoft.com/ja-jp/windows/win32/ …

その場合には、SetWindowPosで制御するとか・・
https://thom.hateblo.jp/entry/2018/06/01/000828
    • good
    • 0
この回答へのお礼

いつもありがとうございます

いろいろ難しそうですね
SetForegroundWindowでAutocADが最前面でロックされているんですね
ちょっと時間がないので先に進んでから
教えていただいた資料を元に、今後考えていきます

本当にありがございました
これからもよろしくお願い申し上げます

お礼日時:2023/08/18 15:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!