4

VBSのSendKeysで、エミュレーションや文字列送信のテリトリー外にリーチできるという情報です。
ほんの少しですが、スクリプトの加工を含みます。
サポート外で自己責任になることを納得したうえで、興味本位か冷やかし程度でお試しいただけると幸いです。
長々と書いてますが、ミニマムで作り方の2.まで読めば試せます。

 

この投稿をきっかけに調べました。

https://winactor.com/questions/question/エミュレーション時にenterキーの区別をつける/

ここの伏線を回収する格好でもあります。

https://winactor.com/questions/question/でコピーした文字をexcelにペーストする際、貼り付/

もしかしたらここにも応用が利くのかも。

https://winactor.com/questions/?q=エミュレーター

 

作り方

  1. プチライブラリをベースにする 

    Excelファイルの値のみペーストするライブラリ
    https://winactor.biz/library/2018/11/09_417.html
    実際のライブラリ名:Excel操作(値のみペースト(ショートカット)))
    ※ 閉じ括弧が1つ余分みたい↑
     

  2. スクリプトのキーボード操作部分を可変にする
    修正前 "%HVV"
    修正後 !SendKeys!
     

  3. ライブラリ名の先頭に「【改】SendKeys -」を付けておく(オプション)
    → メンテの引き継ぎとかで便利
     
    SendKeysに指定するキーボード操作部分の書式は、リファレンスを参照
    https://www.google.com/search?q=VBS+SendKeys
     
    SendKeys ステートメント (VBA) | Microsoft Docs
    https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/sendkeys-statement
     

  4. 良さげなリファレンスサイトの情報を[注釈]タブに載せておく(オプション)
    → それらしい雰囲気を醸し出せる
     
    ここも網羅的に解説してくれてる
    第5回 WshShellオブジェクトの詳細(1) (4/4):Windows管理者のためのWindows Script Host入門 - @IT
    https://www.atmarkit.co.jp/ait/articles/0407/08/news101_4.html

 

注意点

  1. アプリによっては効かないかも
     
    winapi - アプリケーションがVBS SendKeysを無視する
    https://stackoverrun.com/ja/q/3901246
    → Caps LockをOFFにしておくことで回避した模様
     
  2. キーのマッピングをカスタマイズしてる場合は、その考慮も必要
     
    1063-0 | SendKeysが効かないものと効くもの - VB初心者友の会 - VBスクリプト掲示板過去ログ
    http://www.gizcollabo.jp/vbtomo/log/archive/vbscript_1063_0.html

 

高速化

  1. [設定]タブ内でSendKeys1、SendKeys2、、みたいに分けておけば、人は読みやすい
    Mr. Magic氏によると、まとめて送ったほうが速いとのこと(順当)
    → 上の修正後でおっけーということ
     
    vbscript - sendKeysをより速くする
    https://stackoverrun.com/ja/q/12427027
     
  2. 場合によっては、タイミングの調整を要する
    → 適宜ライブラリを直列で並べる
     
    VBSで起動中プロセスにSendkeys
    https://teratail.com/questions/107114

 

テスト内容

  • メモ帳
  • Enter送信

 

結果の想定

  • 改行される

 

結果

  1. 【改】SendKeys - Excel操作(値のみペースト(ショートカット)))
    ◎ 想定通りに改行された
    ◎ 一括処理(1行内で順次処理)・・・▲ 1行に繋げて書くと人は読みにくい
    ◎ 考え得るキーにはすべて対応している模様
    ★ 日本語(2バイト文字)送信は別途の工夫が必要っぽい ← 最強版へのカギ
     
  2. エミュレーション(Enter↓/Enter↑)
    ◎ 想定通りに改行された
    ▲ 順次処理
    〇 118キーに対応している模様
    ▲ 日本語の送信にはクリップボードあたりの組み合わせが必要
     
  3. エミュレーションで文字送信
    × Enterは送信できなかった
    ※ メモ帳から複数の改行をコピーして送信文字列に張り付けてみたものの、実行するとスペースっぽいものが貼り付いた
    ※ サクラエディタでも試し、貼り付いたのはスペースと特定
    ▲ 半角の英数字のみ対応 → 結果的にスペースは送信できた
    × 日本語の送信には使えない
     
  4. 文字列送信
    リターンキー送信をオンにしても、値⇒空欄のままでは改行されず
    ※ 長い文字列を指定したら、10文字毎の改行になった(10文字毎にリターンキーが送信された)
    文字列:値⇒ああああああああああああああああああああああ(22文字)
    文字列:値⇒1234567890123456789012(22文字)
    ◎ 日本語を送信できる
    ▲ リターンキーとうまく付き合うことが必要

 

★VBS版SendKeysの課題

  • VBAなら日本語文字列もSendKeysで送信できるという情報
     
    VBA 【SendKeys】キーを押したことにする | E-VBA
    https://e-vba.com/sendkeys/
     
  • VBSでは日本語(≒2バイト文字)だとIMEがオンになり、変換可能な状態で文字化けって送信された
    ※ 成功イメージは「文字列送信」
    IMEにリーチできてて、何かを送信できてるということは、望みがあるということ
     
  • Clipコマンドを併用して、Ctrl+Vで貼り付ければ文字化けしないという情報
     
    WSHで文字化けさせずにSendKeysで日本語を貼り付ける - Corredor
    https://neos21.hatenablog.com/entry/2016/07/10/000000
     
  • 【改】SendKeys - Excel操作(値のみペースト(ショートカット)))とのハイブリットで最強を目指せそう
    今日は力尽き、、
    ハイブリッド化に成功次第、続報予定
    最近ツワモノさんが増えてるので、きっと製作委員会式でクリアできそう

 

参考

  • 標準ライブラリの「Excel操作(値のみペースト)」は、Excelどうしのコピペで使用可能
     
  • プチライブラリとハイブリッドのライブラリにアップデートされれば、使い分ける必要がなくなって、多くのユーザーがハッピーになれそう
John 編集済みのコメント
回答とコメントは、会員登録(無料)で閲覧できるようになります。