Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1798 / 13645 ツリー ←次へ | 前へ→

【71707】エクセルVBAで、エクセルファイルを開いたときに最前面に表示させたい。 ひろ 12/4/1(日) 3:15 質問[未読]
【71709】Re:エクセルVBAで、エクセルファイルを開い... UO3 12/4/1(日) 7:17 発言[未読]
【71716】Re:エクセルVBAで、エクセルファイルを開い... ひろ 12/4/1(日) 14:23 お礼[未読]
【71809】Re:エクセルVBAで、エクセルファイルを開い... ひろ 12/4/10(火) 22:53 質問[未読]
【71810】Re:エクセルVBAで、エクセルファイルを開い... UO3 12/4/11(水) 6:00 発言[未読]
【71843】Re:エクセルVBAで、エクセルファイルを開い... ひろ 12/4/16(月) 20:20 お礼[未読]

【71707】エクセルVBAで、エクセルファイルを開い...
質問  ひろ  - 12/4/1(日) 3:15 -

引用なし
パスワード
   エクセルのVBAでユーザーフォームを作り、
ユーザーフォーム上にボタンを配置して、
そのボタンを押すと、test.xlsファイルが開く処理。
※ユーザーフォームはモーダルで開いています。

・windowsXP、エクセル2003
・windowsXP、エクセル2007
で動かしたときは、test.xlsファイルは、
最前面(ユーザーフォームの上)に表示されます。

しかし、
・windows7、エクセル2003
・windows7、エクセル2007
で動かしたときは、test.xlsファイルが画面左下の
タスクバーに最小化されてしまいます。
windowsXPのときのように、
最前面に表示されるようにしたいのですがご教授お願いします。


ボタンを押したときの処理−−−−−−−−−−

myFName = "D:\test.xls"

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True  '1.
xlApp.Workbooks.Open Filename:=myFName  '2.

−−−−−−−−−−−−−−−−−−−−−

ネットでいろいろ調べたりして、
1.と2.の処理の間に下記の処理を入れたのですが、
ダメでした。

xlApp.WindowState = xlMaximized
xlApp.Run 3
CreateObject("WScript.Shell").AppActivate xlApp.Caption

【71709】Re:エクセルVBAで、エクセルファイルを開...
発言  UO3  - 12/4/1(日) 7:17 -

引用なし
パスワード
   ▼ひろ さん:

おはようございます。
今、

XP+2003
Win7+2007
Win7+2010

で、実行しましたが、いずれも、別エクセルが最前面に位置し
ユーザーフォームは、隠れます。

このコードで見えていないところでなにかありませんか?
特殊なことをしておられるとか?
(APIなんかを使ったWindowPositionの操作とか)

まぁ、それはないのでしょうね。
そうであれば、お気づきだと思いますので。

別の板で、テーマも違いますが、2007,2010 には、まだまだ不具合があるようです。
とりあえずは、WindowsとOfficeをUpDateして最新のバージョンにしてみるというのも
無駄ではないかも。

以下のスレの最後の「ろひ」さんのコメントを参照ください。
h tp://www.moug.net/faq/viewtopic.php?t=62736

報告だけど、お役に立てずにごめんなさい。

【71716】Re:エクセルVBAで、エクセルファイルを開...
お礼  ひろ  - 12/4/1(日) 14:23 -

引用なし
パスワード
   回答ありがとうございます。感謝です。

質問のため処理を簡潔に書きましたが、
特に影響をあたえる処理はしてないと思います。
windows,officeともにupdateしてみます。

【71809】Re:エクセルVBAで、エクセルファイルを開...
質問  ひろ  - 12/4/10(火) 22:53 -

引用なし
パスワード
   かなり時間が経ってしまいましたが・・・。

VBE画面より実行すると、
win7+excel2007でも
ユーザーフォームの上に別エクセルが表示されますが、
ThisWorkbookに
Private Sub Workbook_Open()
  UserForm1.Show
End Sub
のコードを追加して、
ファイルをダブルクリックしてマクロを有効にして開き、
作成したボタンを押して
別エクセルを開くとタスクバーに最小化され、
ユーザーフォームが前面に表示されてしまいます。

【71810】Re:エクセルVBAで、エクセルファイルを開...
発言  UO3  - 12/4/11(水) 6:00 -

引用なし
パスワード
   ▼ひろ さん:

おはようございます
紹介したトピでも、結局は原因不明でした。
ただ、
・VBE画面でステップ実行すればOKになる。
・コードの間にMsgBoxを入れて人間のレスポンスをいれるとうまくいく。
こういう現象でしたので、最終的には、コードの間にDoEventをはさんで「逃げ」をうたれたようです。
同じような現象だと思われます。
こちらでは発せ英しませんので、ひろさんのPCあるいはWindowsの環境とExcelの環境の何かの不整合によるバグだと思われます。

だめもとで

Set xlApp = CreateObject("Excel.Application")
DoEvents
DoEvents
xlApp.Visible = True  '1.
DoEvents
DoEvents
xlApp.Workbooks.Open Filename:=myFName  '2.
DoEvents
DoEvents

これで、ためしてみませんか?

【71843】Re:エクセルVBAで、エクセルファイルを開...
お礼  ひろ  - 12/4/16(月) 20:20 -

引用なし
パスワード
   回答ありがとうございます。

DoEventsをはさんでみましたがうまくいきませんでした。
しかし、いろいろ調べていたら下記のようなやり方がある
ことがわかり試してみたところ、
うまくユーザーフォームの上に
エクセルが表示されるようになりました。

Private Declare Function ShowWindow Lib "user32" (ByVal hwindow As Long, ByVal cmdshow As Long) As Long

Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open Filename:=myFName
ret = ShowWindow(xlApp.Hwnd, 3)

いろいろと本当にありがとうございました。

1798 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free