プロが教えるわが家の防犯対策術!

こんばんは

htmlオブジェクトのクリップボードの操作方法を眺めていたのですが、期待と違う戻り値がもどってきて少し戸惑っています。
以下、htmlfileオブジェクトによるクリップボード操作になりますが、strClipが「True」と表示されます。
「文字を送る」と返して欲しかったのですが、ClipboardDataはそういう操作をするものではないのでしょうか?
※IEを利用したクリップボード操作など、他のアプローチ方法については知っておりますので、htmfileオブジェクトによる操作が可能かどうかについての、ご回答をお願いします。

Set objHTML = CreateObject("htmlfile")
strClip = objHTML.ParentWindow.ClipboardData.SetData("text","文字を送る")
Msgbox strClip

A 回答 (1件)

こんばんは。



strClip = objHTML.ParentWindow.ClipboardData.SetData("text","文字を送る")
もちろん、このコードは、ClipboardDataから、文字列を取得するなら、
strClip =objHTML.parentWindow.clipboardData.getData("text")

ではあるのですが、

>Set objHTML = CreateObject("htmlfile")
>objHTML.ParentWindow.ClipboardData.SetData("text","文字を送る")
これ自体が、クリップボードに文字を送れないですね。
どうしてか分かりません。

ご指摘のように、
Set objHTML = CreateObject("InternetExplorer.Application")
を使ってはできるようですが、途中で、IEのセキュリティに引っかかってしまいますので、変更しなければなりません。

無難なところでは、以下のような方法ぐらいしか思いつきません。

'//
Set objHTML = CreateObject("HTMLfile")
Const sTEXT ="文字を送れます"
ret =objHTML.parentWindow.clipboardData.clearData("text")
''ret =objHTML.parentWindow.clipboardData.setData("text", sTEXT)
Call PutInClip(sTEXT)
strClip =objHTML.parentWindow.clipboardData.getData("text")

If IsNull(strClip)=False Then
MsgBox strClip
Else
MsgBox "err"
End If
Set objHTML = Nothing
'ここで終わり

Sub PutInClip(Text)
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("clip")
Set oIn = oExec.stdIn
oIn.WriteLine Text
oIn.Close
End Sub
'///
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!