トップ回答者
form1からwordを呼び出したとき,wordを前面に表示したい。

質問
回答
すべての返信
-
説明がおおざっぱすぎです。
Form1 は System.Windows.Forms.Form のことですか?
word は Microsoft Office Word のことですか?もしそうであるならバージョンはいくつですか?
Me.TopMost = false の Me はどのオブジェクトのことですか?
エディター画面でテストとは何のことですか?デバッグ実行のことですか?
インストーラをつくり実行とは何のことですか?インストーラを作ってそれを実行してインストールされたものを実行するということですか?
フォームが表示された時点で TopMost の値がどうなっているか確認してみてください。
インストーラが最新であるか確認してみてください。 -
質問の内容を吟味してみるべきでした。お詫びします。
プロジェクトを作成した環境
Visual studio 2008 Windows7(64ビット) Microsoft Office Word2010
作成したプロジェクトの内容
form上のボタンをクリックしたときwordを呼び出す
プロジェクトをセットアップした環境
ア Windows7(64ビット) Microsoft Office Word2010
イ WindowsXP Microsoft Office Word2010
セットアップしたプロジェクトを実行したとき,
アでは,Formが前面に,wordが背面に表示されます。
イでは,wordが前面に,Formが背面に表示されます。
《お聞きしたいこと》
アでもイのように,wordが前面に表示されるようにする方法はないでしょうか?プロジェクトのコード
Private Sub ButtonClick(ByVal sender As Object, ByVal e As System.EventArgs)
Dim strFilename As String
Dim strPath1 As String strPath1 = "D:\宛先印刷\封筒\"
strFilename = "B5用封筒.docx"
Dim wdApp As Object
wdApp = CreateObject("Word.Application")
With wdApp
'word文書を開く
.visible = True
.documents.open(strPath1 & strFilename)
'MeはForm1(のつもり)
Me.TopMost = False
End With
End Subzen73
-
ヘルプをきちんと読まれていますか?
TopMost は True にすれば最前面に表示、False にすればその状態を解除するしか効能がありません。従って、自分のウィンドウを後ろに移す目的では使えません。アクティブにするためにはそういったメソッドが用意されているか、もしくは Win32API などでウィンドウをアクティブにする処理が必要になるでしょう。具体的な処理については検索などで情報を一度集めていただいた上で、何がわかって、何がわからないかを明確にしてください。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
-
またもや説明がまずく申し訳ありません。
TopMostを使うのではなく,SetForegroundWindow関数を使うのだということがわかってきました。
この使い方を調べているところです。関連する質問をさせてください。
ア セットアップして実行したとき,呼び出し元のFormの表示(前面・後面)が7とXPの2つの
OSで異なるのはなぜでしょうか?
イ 同じOS(7)でも,デバッグ実行したときとセットアップして実行したときで,Formの表示
(前面・後面)が異なるのはなぜでしょうか?
↑ (コードを書いた後にF5キーを押して確かめることですが何とい
えばよいのかわかりません)
zen73
- 編集済み zen73 2012年5月1日 7:03
-
イ についてだけですが、SetForegroundWindow はデバッグ実行中だと動きが異なります。このことが関係しているのではないでしょうか。
次の URL の Remarks に説明があります。
SetForegroundWindow function (Windows)
http://msdn.microsoft.com/ja-jp/library/ms633539(v=VS.85)
日本語の解説もなくはないのですが、ちょっと意味が分かりにくいので、英語と合わせてお読みください。
SetForegroundWindow 関数
http://msdn.microsoft.com/ja-jp/library/cc411039.aspx -
ア セットアップして実行したとき,呼び出し元のFormの表示(前面・後面)が7とXPの2つの
OSで異なるのはなぜでしょうか?XP と Vista 以降で挙動が違ったと思います。
(すみません。どう違うかまで覚えていないので明確には出せません)↑ (コードを書いた後にF5キーを押して確かめることですが何といえばよいのかわかりません)
デバッグ実行で十分通じます。
逆に「セットアップして実行」という方に語弊があるように思います。単に Ctrl+F5 でも再現するのでは?Ctrl+F5 のことを「デバッグなしで実行」(メニューにもそう書いてある)と便宜上呼びます。
また、exe ファイルを直接実行するとかでも再現するかもしれませんね。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
- 編集済み AzuleanMVP, Moderator 2012年5月1日 8:51