つらつら Excel VBA

私の備忘録です。

ディスプレイ上の画像位置を取得する(DPI値の注意)

ピクセル=ポイント×96/72
インチ変換計算が必要で72で割ってます。問題は96の部分。

'ディスプレイ上におけるA1の左上の位置を取得する。ピクセル値。
x = ActiveWindow.PointsToScreenPixelsX(0)
y = ActiveWindow.PointsToScreenPixelsY(0)

'A1の左上からオブジェクトの位置を取得。ポイント値。
xx = オブジェクト.Left
yy = オブジェクト.Top

'ディスプレイ上のオブジェクトの位置。ピクセル値。
xxx = (xx * 96 / 72) + x
yyy = (yy * 96 / 72) + y

私のパソコンはディスプレイの表示設定が125%推奨(120dpi)になっておりまして、、、計算に96を使うと正しい位置が取得できませんでした。実行するパソコンごとにディスプレイの拡大率、DPI値を確認する必要がある。

ディスプレイ拡大率を100%に変更すると位置が取得できた!拡大率125%でDPI値120でも位置が取得できた!

DPI値拡大率
96100%
120125%
144150%
192200%
以上。