jQueryのflatpickrをVBAで攻略する第4回 日の入力をしよう

こんにちは、今日は第4回「日の入力をしよう」です。

第1回で起動したカレンダーの日を変更する方法です。もうお察しはつくかと思いますが、マウスイベント中のmousedownイベントを使います。ただし、注意したいのは、日付入力に関してページの仕様を見るとclass属性ではユニークキーになっていないことです。objIE.document.getElementsByClassName()では取得できません。jQueryで拡張された独自要素で取得するしかありません。どうしたいいでしょうか?

ここでは、objIE.document.querySelector()を使うことにします。そして、mousedownイベントもマウスの座標を指定するものにします。

VBA
Dim dateTile As Object
'ここでは2019/12/11を指定します。HTMLでの要素、aria-label="12月 11, 2019"を使います。
Set dateTile = objIE.document.querySelector("[aria-label='12月 11, 2019']")
Dim datePosition As Object
Set datePosition = CallByName(dateTile, "getBoundingClientRect", VbMethod)
   
Dim mouseEvent As Object
Set mouseEvent = objIE.document.createEvent("MouseEvents")
mouseEvent.initMouseEvent "mousedown", True, True, objIE, 0, datePosition.Left, datePosition.Top, 0, 0, False, False, False, False, 0, Null
dateTile.dispatchEvent mouseEvent

なんだか難しい構文ですね。私にもよくわからないのですが、これで操作できてしまいました。今回がシリーズのヤマです。では。

追記

ちなみに、queryselector()メソッドの引数を変数にするときは下記のとおりです。

Dim label As String
label = myStartMonth & "月 " & myStartDay & ", 2019"
Set dateTile = objIE.document.querySelector("[aria-label='" + label + "']")

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント