2021年8月7日土曜日

VBSでのclipboadの操作

editorの関係で、VBAで作ってVBSに移植を行っています。

clipbosrd操作もVBAとVBSで違いがあるようです。

HTMLfile objectを使用します。

    'clipboard操作
    Set objHTML = CreateObject("htmlfile")

clipbordのtext取得はVBAとVBSで同じ方法で行けそう。

    'clipboardの内容を取得する
    strTEXT = objHTML.ParentWindow.clipboardData.GetData("text")

clipboardへの書き込みが問題です。

    'Clip BoardSetする VBAはこちら
    objHTML.ParentWindow.clipboardData.setData "Text", strTEXT

    'Clip BoardSetする VBSはこちら
    cmd = "cmd /c ""echo " & strTEXT & "| clip""" 
    CreateObject("WScript.Shell").Run cmd, 0

VBA用はVBSではうまく動かず、VBS用はVBAではうまく動かず、良く分かりません。

VBS用は注意点がいくつかあります。

    最後に改行codeが入る
    |の前にspaceを入れるとspaceが入ってしまう
    strTEXTが空白だとechoの結果がclipboardに入ってしまう
    strTEXTに"が含まれているとうまく動作しない

改行codeをなくすには無理やりですが以下のようにしました。

    'Clip BoardSetする VBSはこちら
    cmd = "cmd /c ""set /p a=""" & strURL & """ < nul | clip"""
    CreateObject("WScript.Shell").Run cmd, 0

いずれにせよ制約が多そうなので、careしながら使うことにします。


このtopicsと全然関係ないですが、今回VBAで他に嵌ったのは、

    val関数が使えない。

        これは\と,を””に置換したらstringのまま計算できた。

 err objectがglobal変数だと思っていたらlocal変数だった

        private subに入ったら別の中身になっていました.

        VBAでも同じかな。documentを読むとglobalみたいなのですけど。


少なくともclipbord操作くらいはVBSの標準機能にしてほしいですね。

0 件のコメント:

コメントを投稿