Google
WWW を検索 tips.asablo.jp 内を検索
 このブログサイト(tips blog)の中だけを検索できます。
 アサブロへの設定方法は、こちらをクリック

VBAでExcelからWordを呼び出すと背面に隠れてしまう2018/06/07 21:19

 Excelの表をWordの表に変換するというVBAを書いていたところ、Wordを呼び出してもExcelの背面に隠れてしまうという現象に悩まされていました。

 プログラムはこんな感じ。

Dim uWord As New Word.Application
Dim uDoc As Word.Document

uWord.Visible = True
uWord.Activate

Set uDoc = uWord.Documents.Add

 テストしながら作っているときはちゃんと前面に来ていたのに、Excelを落として起動するところから始めるとWordが背面で起動してしまいます。

 ググれどもググれども情報がなく、ようやく先程みつけました。

https://stackoverflow.com/questions/4955366/why-doesnt-word-come-to-front-when-we-activate-it

 どうやらWindows 7以降に実装された一種のセキュリティメカニズムで、他のアプリケーションが邪魔しないようにしてあるらしい。

 あるアプリケーションは、同じプロセスで走っていない別のアプリケーションの並び順を変更できないらしい。

 開発中に上手くいくときもあったのは、この条件を回避できる時があったのかもしれません。



回避策1:

Application.ActivateMicrosoftApp xlMicrosoftWord

 これは一行で簡単だけれど、試してみると、最後の行に置くと文書2が開いてしまう。Documents.Addの前に持っていくと開かないけれど、後々ちょっと不気味。



回避策2:

uWord.WindowState = wdWindowStateMinimize
uWord.WindowState = wdWindowStateNormal

 最小化して、もとに戻すという至ってシンプルな方法です。
 とりあえずWindows 10では動作しました。


 というわけで、ようやく解決したようです。
\(^o^)/

 今夜はよく眠れそうです。
( ̄^ ̄)



2018-06-08
 作業中に突然前面に表示されたアプリをうっかり操作してしまわないために、Vistaから追加された機能のようです。そういえばそんな話があったような気がします。

https://social.technet.microsoft.com/Forums/ie/ja-JP/81c6b01d-693f-408b-a9db-1edb48102b36/12450125031252212465125401247112519125313621521205261781239530?forum=w7itprogeneralja

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
スパム対策です。「BBB」と入力してください。なお、上記のメールアドレス、URLは不要です。

コメント:

トラックバック

Google
WWW を検索 tips.asablo.jp 内を検索
 このブログサイト(tips blog)の中だけを検索できます。
 アサブロへの設定方法は、こちらをクリック