[[20100129171023]] 『エクセルを常に前面表示するには』(toshihiko) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルを常に前面表示するには』(toshihiko)
初めて質問させてもらいます。
エクセルを開いたまま、VisualBasicのコーディングをしたいのですが、コーディングをしようとすると、エクセルがVisualBasicの下に隠れてしまいます。適当な大きさにしたエクセルを常にスクリーンの最前面に表示しておく事はできませんか。


 今、ちょっと試してみたけど、あんまり遣いかっては、よくないですけどねえ。
 二つのタスクのウインドー(例えば、ExcelとVBE)を上下(左右)に並べて表示等で対処したら
 と思います。が、ご自分で試してみて判断してください。
 Excel2002以上のバージョンだとして・・・。

 標準モジュールに

 '============================================================
 Option Explicit
 Public Declare Function SetWindowPos Lib "user32" (ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, _
         ByVal cx As Long, ByVal cy As Long, _
        ByVal wFlags As Long) As Long
 Public Const walways = -1 '常に手前にセット
 Public Const wreset = -2  '解除
 Public Const wdisp = &H40 '表示する
 Public Const w_SIZE = &H1 'サイズを設定しない
 Public Const w_MOVE = &H2 '位置を設定しない
 '==========================================================================
 Sub Excelを常に手前に設定()
    Dim Hwnd As Long
    Hwnd = Application.Hwnd
    Call SetWindowPos(Hwnd, walways, 0, 0, 0, 0, wdisp Or w_SIZE Or w_MOVE)
 End Sub
 '===========================================================================
 Sub Excelを常に手前に設定解除()
    Dim Hwnd As Long
    Hwnd = Application.Hwnd
    Call SetWindowPos(Hwnd, wreset, 0, 0, 0, 0, wdisp Or w_SIZE Or w_MOVE)
 End Sub

 「Excelを常に手前に設定」を実行して試してください。

 解除は、「Excelを常に手前に設定解除」を実行です。

 ichinose


 toshihiko
 早速の回答ありがとうございます。
 ”二つのタスクのウインドー(例えば、ExcelとVBE)を上下(左右)に並べて表示等で対処する方法”は、
 スクリーンが余程大きければいいかもしれませんが、ちょっと使い勝手が悪そうです。
 その次に書かれているコードは、VBE側に記述するという意味ですよね!
 だとすると、私の質問は、「エクセルに書かれている内容を見ながらコーディングをしたい」という意味で、
 当然VBEは動作していないので解決にならないと思うんですが、
 エクセル側のマクロに書くという意味ですか?


 私が勘違いしていたみたいです。VBEではなく、VisualBasicのコーディング なんですね!!

 VBは、インストールしなければならないのでVB側からの記述ではなく、
 Excel側に「常にスクリーンの最前面に表示しておく」アドインを作成する手順を記述します。

 つまり、
 >エクセル側のマクロに書くという意味ですか?
 という意味です。

 Excelを起動してください。新規ブックとして、Book1が既定ブックとして作成されていることを
 確認してください。

 Alt+F11を押して、VBEを起動してください。

 Book1のThisworkbookのモジュールに

 '============================================================
 Option Explicit
 Private Declare Function SetWindowPos Lib "user32" (ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, _
        ByVal X As Long, ByVal Y As Long, _
         ByVal cx As Long, ByVal cy As Long, _
        ByVal wFlags As Long) As Long
 Const walways = -1 '常に手前にセット
 Const wreset = -2  '解除
 Const wdisp = &H40 '表示する
 Const w_SIZE = &H1 'サイズを設定しない
 Const w_MOVE = &H2 '位置を設定しない
 '==========================================================================
 Sub Excelを常に手前に設定()
    Dim Hwnd As Long
    Hwnd = Application.Hwnd
    Call SetWindowPos(Hwnd, walways, 0, 0, 0, 0, wdisp Or w_SIZE Or w_MOVE)
 End Sub
 '==========================================================================
 Private Sub Workbook_Open()
    Excelを常に手前に設定
 End Sub

 と記述してください。

 VBEからExcelに戻ってください。

 「ファイル」-----「名前を付けて保存」とクリックして、名前を付けて保存するダイアログを表示させて
 ください。

 「ファイルの種類」として、「Microsoft Excel アドイン (*.xla)」を選択してください。
 保存フォルダが変わりますが、そのまま表示フォルダに保存します。

 ファイル名は、常に手前に表示.xla と命名してください。

 一度、Excel本体を閉じてから、再度Excelを立ち上げてください。

 再び、新規ブックとして、Book1が既定ブックとして作成されていることを
 確認してください。

 「ツール」----「アドイン」と起動して、アドインダイアログを表示させてください。
 アドイン一覧に先に作成した「常に手前に表示」があるはずです。
 チェックを入れてOKをクリックしてください。

 この時点から、Excelが常に手前に表示されるはずです。
 このアドインにチェックが入っている限り、次回からは、起動すれば自動的にExcelは、
 常に手前に表示されるはずです。

 これでVBコーディングがExcelを見ながら出来ます。

 ちょっと試した限りでは、やっぱり私は使いづらかったですが・・・。

 あくまでもExcel2002以上のバージョン用です。

 ichinose


 toshihiko
 ご指導ありがとうございました。もう10年以上前にちょっとマクロをかじっただけ
 だったのと、最近のエクセルの様相が随分変わっていたので苦労しましたが、
 私の長年思っていた事が実現できました。本当にありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.