tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルエクセルシートを最前面に表示したい
記事No15896
投稿日: 2014/05/06(Tue) 11:25
投稿者小村
いつも拝見させて頂いている小村と申します。
今回、コマンドボタンを押したらエクセルシートが表示出来るようにプログラム作成中です。
一応、表示できるようになったのですが、なぜか、フォームの後ろ(最背面)に
エクセルのシートが表示されてしまいます。
出来れば、最前面に表示したいと思っておりますがうまく行かないので、
大変申し訳ございませんが、アドバイスして頂けると幸いです。
とりあえず、コマンドボタンのソースを書いておきますので、よろしくお願い致します。
(Windows7、VB6.0 SP6、エクセル2010)

※コマンドボタンのソース抜粋
Dim xlApp    As Excel.Application
Dim xlBook   As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("D:\BOOK.xls", ReadOnly:=True)
Set xlSheet = xlBook.Worksheets(1)
xlApp.Visible = True
xlSheet.Activate
上記ソースでエクセルのシートは表示されるのですが、なぜか最背面に表示されてしまう。

[ツリー表示へ]
タイトルRe: エクセルシートを最前面に表示したい
記事No15897
投稿日: 2014/05/06(Tue) 23:31
投稿者VBレスキュー(花ちゃん)
> 上記ソースでエクセルのシートは表示されるのですが、なぜか最背面に表示されてしまう。

最背面に表示されるとは、前面にはどのようなファイルが表示しているのでしょうか?

VB の Form とエクセルだけでも背面に表示しますか?
Win 7 と Win 9.1 で試して見ましたがどちらもエクセルの方が前面に表示されますが。

Form を最前面に表示していませんか?(特別な処理をしていなければ、エクセルが前面に表示されるはず)
その辺を見直して、解決できないのあれば、
このコードを実行したらそのようになるという再現できるコードを投稿して下さい。
私のところでは再現できませんので。


[ツリー表示へ]
タイトルRe^2: エクセルシートを最前面に表示したい
記事No15898
投稿日: 2014/05/07(Wed) 08:38
投稿者小村
VBレスキュー(花ちゃん) 様、アドバイスありがとうございます。
補足させて頂きますが、前面にはフォームが表示されています。
※フォーム内のコマンドボタンを押すことで、エクセルのシートが
表示されるようにプログラム作成しております。

確かにデバッグ状態では、エクセルが最前面に表示されるのですが、
なぜか、コンパイルしたEXEから実行すると、エクセルが背面に
表示されてしまいます。
もう少し、ソースを見直してみたいと思います。
ただ、なぜデバッグ状態だとOKでEXEから実行だと背面に
表示されるのか解決できるのか疑問ですが、頑張ってみます・・・。

[ツリー表示へ]
タイトルRe^3: エクセルシートを最前面に表示したい
記事No15899
投稿日: 2014/05/07(Wed) 12:57
投稿者VBレスキュー(花ちゃん)
> 確かにデバッグ状態では、エクセルが最前面に表示されるのですが、
> なぜか、コンパイルしたEXEから実行すると、エクセルが背面に
> 表示されてしまいます。

Excel を表示してデータを取得してその結果を Form に表示するような事をしていませんか?
それならもう一度、Excel の方にフォーカスを設定すればいいかと思うのですが。

又は、Excel の表示後の処理をなにもしないようにして試してみるとか。
P-Code コンパイルで EXE を作成してどうなるか確認して見て下さい。

[ツリー表示へ]
タイトルRe^4: エクセルシートを最前面に表示したい
記事No15900
投稿日: 2014/05/07(Wed) 13:20
投稿者小村
VBレスキュー(花ちゃん)様、度々、ありがとうございます。

一応、エクセルは、読み取り専用で開き、閲覧のみしかしておりません。

今さらなのですが、私はVBを始めたばかりであまり詳しくないため、
エクセルにフォーカスを設定とか、P-Codeコンパイルとか、よくわからないです。

エクセルにフォーカスを設定出来れば大丈夫のような気がするのですが、
どのようにしたら、出来るのでしょうか?
また、P-Codeもよくわからないので、まずは自分で調べてみようと思います。

色々なアドバイスを参考に取り組んでみて、やっぱりだめなら、再度、質問させて
頂きたいと思います。
調べる方法も試行錯誤しながらと思うのでかなり時間がかかると思いますが、
また、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: エクセルシートを最前面に表示したい
記事No15909
投稿日: 2014/05/13(Tue) 17:14
投稿者魔界の仮面弁士
> なぜか、フォームの後ろ(最背面)に
> エクセルのシートが表示されてしまいます。

関係あるかどうかは分かりませんが、下記のレジストリ設定を
変更してみて、現象が改善されるかどうか確認してみて下さい。
http://support.microsoft.com/kb/886217/ja


もし、上記で改善が見られたものの、実行環境のレジストリ設定を
変更したくない事情がある場合は、SystemParametersInfo API を使うことで
この設定をプログラムから切り替えることもできます。

下記は .NET 向けの話題ですが、VB6/VBA 向けのサンプルも掲載しているので参考までに。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=63230&KLOG=107

[ツリー表示へ]
タイトルRe^2: エクセルシートを最前面に表示したい
記事No15910
投稿日: 2014/05/15(Thu) 11:55
投稿者小村
魔界の仮面弁士様、返事が遅くなり申し訳ございませんでした。
当方のPC環境はWindows7ですが、魔界の仮面弁士様のアドバイス通りレジストリの変更を
行ってみました。ただし、TweakUIユーティリティに関しては何もしておりません。
レジストリの値を、20000から0に変更して実行してみたところ、バッチリうまく表示されました。
なぜ、Windows7でもこのような現象になるか疑問ですが、とりあえず、うまく表示
出来たので、大変、助かりました。
本来なら、理解してからが良いのですが、何分、まだVBを始めたばかりの初心者ですので
正直、理解できない点が多すぎます…((+_+))
今後ともよろしくお願いいたします。
また、サンプルも拝見させて頂きます。

[ツリー表示へ]