VBScript でクリップボードのデータを扱う

先日やっていた仕事で使うスクリプトでクリップボードのデータを読み込んだり、クリップボードにデータをセットしたりという処理を書きました。あ、今回扱ったのはテキストデータのみです。

クリップボードのテキストを取得する

' クリップボードのテキストを取得する
Function GetClipboardText()
    Dim objHTML
    Set objHTML = CreateObject("htmlfile")
    GetClipboardText = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
End Function

いくつかアプローチの種類がありそうでしたが、htmlfile オブジェクトを作って ParentWindow.ClipboardData.GetData("text") というメソッドを使えば OK です。

この辺を見るとよさそうでした。

調べているときに見つけた別アプローチです。

クリップボードにテキストをコピーする

' 引数 str をクリップボードにコピーする
Sub PutInClipboardText(ByVal str)
    Dim cmd
    cmd = "cmd /c ""echo " & str & "| clip"""
    CreateObject("WScript.Shell").Run cmd, 0
End Sub

こちらは VBScript というかコマンドプロンプトの clip コマンドを呼び出して対応しています。上記の Microsoft のドキュメントを見ると setData というメソッドもあるようなのですが、試したところうまくできませんでした。

私のやり方がよろしくなかったのかもしれません。この clip コマンドを使うやり方を知っていたので setData についてはあまり深追いせずすぐにあきらめたので検証が不十分な可能性もあります。