|
▼とっちゃん さん:
>「タスクバーを自動的に隠す」機能があるとは知りませんでした。
>とりあえず、これでしのぐ事を検討しますが、最終的には
>タスクバーを最下段にする(慣れて頂く)のが最良の様ですね。
ちょっとちがうと思いますけど?
Applicationウィンドウを最大化してタスクバーにはお隠れになって
もらうのでなく、タスクバーが「常に前面に表示」になっているときは
タスクバーをのぞくデスクトップエリアにExcel Windowを表示するのが
スジかと思います。
ちょっと調べてみましたら、タスクバーを除いたワークエリアを取得する
には SystemParametersInfo というAPI えばそれができるそうで、
試しに 標準モジュールに 以下をコピーして、
タスクバーのオプションを「常に表示」にしてから
タスクバーを画面の最上部や右端にドラッグして
Sub Try1()
を実行してみてください。
'-------------------------------- 標準モジュール
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
' SystemParametersInfo 関数
Private Declare Function SystemParametersInfo Lib "USER32.DLL" _
Alias "SystemParametersInfoA" ( _
ByVal uAction As Long, _
ByVal uParam As Long, _
ByRef lpvParam As Any, _
ByVal fuWinIni As Long _
) As Long
Private Const SPI_GETWORKAREA = 48 'ワークエリア取得
Private Declare Function GetDC Lib "user32" _
(ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
(ByVal hWnd As Long, ByVal hDC As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hDC As Long, ByVal nIndex As Long) As Long
Sub Try1()
Dim hDC As Long
Const LOGPIXELSX = 88
Const LOGPIXELSY = 90
Dim ToPointX As Double, ToPointY As Double
hDC = GetDC(0)
' 画面上のdpiを取得、Point長に変換する係数を得る
ToPointX = 72 / GetDeviceCaps(hDC, LOGPIXELSX)
ToPointY = 72 / GetDeviceCaps(hDC, LOGPIXELSY)
ReleaseDC 0, hDC
Dim Rec As RECT
Dim ok As Long
' ワークエリアの長方形を取得
ok = SystemParametersInfo(SPI_GETWORKAREA, 0&, Rec, 0&)
'Excelウィンドウを ワークエリアいっぱいにセット
With Application
.WindowState = xlNormal
.Left = Rec.Left * ToPointX
.Top = Rec.Top * ToPointY
.Width = (Rec.Right - Rec.Left) * ToPointX
.Height = (Rec.Bottom - Rec.Top) * ToPointY
End With
End Sub
'------------------------------------------------ ここまで
うまく表示されるようでしたら、このコードをそっくり
マクロのあるBookの ThisWorkbookモジュールに転記し、
Sub Try1()
を
Private Sub Workbook_Open()
に名前を変えて、運用してください。
|
|