[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マウスホイールを回転させたい』(ハリー)
エクセルから社内で使用しているアプリケーションを操作する
マクロを組んでいます。
作業上、一旦最大限まで拡大(MAXくるくる50回)し、
その後、手前にくるくる10回をおこなって画面の縮尺を
保ちたいと考えています。
sendkeyのようにキー操作できれば簡単だったんですが、
ウィンドウ内の画面の拡大はマウスホイールを奥に、
縮小は手前にくるくるすることでしかできないです。
ウィンドウハンドルは取得できています。
対象のウィンドウ内で
マウスホイールをマクロから動かしたいと思うのですが
やり方はあるでしょうか?
< 使用 Excel:Office365、使用 OS:Windows10 >
シートのズーム率を変えるなら、右下にある「100%」とか書いてあるところをクリックすると、数値で倍率指定できますが、これでは駄目ですか? また、マクロの記録を行ってからこの操作をすると、マクロでどのプロパティを操作するのか調べる事ができるので、任意の倍率にするマクロも簡単に作れますよ。(ショートカットキーでも設定しておけば一発で変わります)
(???) 2019/07/04(木) 16:01
そのアプリには、ズーム率を数値変更できる機能は付いていませんか? ショートカットキーが割り振られているならば、SendKeysで変わりそう。
(???) 2019/07/04(木) 16:06
Windowsの原理的には、ホイールを回すと WM_MOUSEWHEEL のメッセージが飛ぶので、APIを使ってこれと同じメッセージを飛ばせば、不可能ではないと思います。 が、いろいろ調べるのが大変なので、ちょっとコードは書けないです。 すいません。
(???) 2019/07/04(木) 16:31
Private Declare Sub mouse_event Lib "user32" ( _ ByVal dwFlags As Long, _ Optional ByVal dx As Long, _ Optional ByVal dy As Long, _ Optional ByVal dwData As Long, _ Optional ByVal dwExtraInfo As Long) Const MOUSEEVENTF_WHEEL = &H800 Const WHEEL_DELTA = 120
Call mouse_event(MOUSEEVENTF_WHEEL, 0, 0, WHEEL_DELTA, 0) Call mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -WHEEL_DELTA, 0) (???) 2019/07/04(木) 18:02
For n = 1 To 50 mouse_event MOUSEEVENTF_WHEEL, 0, 0, 1, 0 Sleep 5 Next n
のようにしています。
ホイールクリックは使用しませんでしたのでWHEEL_DELTAは使用しませんでした。
アプリ側の問題なのか最初はうまく動作しませんでしたが
sleepで少し時間稼ぎしながら1つずつ繰り返すとうまくいきました。
???様ほんとにありがとうございました!!
(ハリー) 2019/07/05(金) 08:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.