• 締切済み

【VBA】クリップボードに格納したデータの操作

こんにちは。ExcelVBAについての質問です。 HP等の文字列をコピーして、テキストデータを取得するところまではできるのですが、 その内部にあるURLをどうやって取得したらよいのかで困っております。 例えば、HP上に【あいうえお】といったリンクがあるとします。 これをドラッグコピーしてクリップボードに格納しその テキストは New DataObjectのGetTextで取得できますが その場合、ただの「あいうえお」といったテキストデータになってしまいます。 その内部にあるhttp//・・・・・・・・ といったデータが取得できません。 ドラッグコピーでクリップボードに格納するだけではURLは取得できないのでしょうか? ドラッグコピーしたデータをセルをアクティブにしないで貼り付けると 文字が青色になりハイパーリンクになって張り付きます。 ということは内部のURL情報もクリップボードに格納されているということだと思いました。 説明下手で申し訳ありませんが、よろしくお願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

補足: 早い話、クリップボードの中で取れるテキストは、ソースなのです。 そのソースから取り出そうとしても、ハイパーリンクとしては役に立たなかったのです。そのコードをつなぎ合わせれば、出来るけれども……。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 今、マクロで試してみたのですが、取り出すことが出来なかったですね。 DataObject は、テキストデータのみですから、出来ないのは当たり前ですが、 しかし、今、API 関数の GetClipboardData で取り出してみたところ、私の環境では、 SourceURL は取れるのですが、個々のハイパーリンクは、取れませんね。 Debug.Print をみると、せいぜい、    <a href="c232.html">Office系ソフト のようにしか取れません。テキストの場合は、取り出したものを、一旦、つなぎ合わせないと、情報にはならないのかもしれません。 セルに貼り付けたものなら、取り出すのは出来るとは思います。 なお、IE7 では、コピーと、ショートカット・コピーがあって、ショートカット・コピーで貼り付けすると、そのまま取れてしまうのですが、あえて、IE7 をお勧めしません。

関連するQ&A

  • アクセスvbaでクリップボードにコピーの動作を実行

    アクセスvbaでクリップボードにコピーの動作を実行したいです。 エクセルなら、 Sub test() Dim buf As String Dim CB As New DataObject buf = "test" With CB .SetText buf ''変数のデータをDataObjectに格納する .PutInClipboard ''DataObjectのデータをクリップボードに格納する .GetFromClipboard ''クリップボードからDataObjectにデータを取得する Debug.Print .GetText ''DataObjectのデータを変数に取得する End With End Sub これが実行できるのですが、 どうやらアクセスだと Dim CB As New DataObject これがエラーになるようです。 Dim CB As Objectにすると .SetText buf で実行時エラー91になります。 (「オブジェクト変数またはWithブロック変数が設定されていません」) http://officetanaka.net/excel/vba/tips/tips20.htm によると、 「DataObjectオブジェクトはMSFormsのメンバです。使用するには、Microsoft Forms 2.0 Object Libraryを参照設定します。または、ブックにUserFormを挿入すると自動的に参照設定されます。」 なので、アクセスvbaの参照設定で「Microsoft Forms 2.0 Object Library」を探したのですが、 ありませんでした。 当方バージョンは2010です。 アクセスでは不可能と言うことでしょうか? ご教授よろしくお願いします。

  • エクセルVBAでセル範囲のデータをクリップボードに

    セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。 http://okwave.jp/qa/q5650002.html#16327676 の回答ANo2を見て Sub test01() Dim myData As DataObject Dim myCb As Variant Dim x x = "TESTデータです。" Set myData = New DataObject myData.SetText x myCb = myData.GetText myData.PutInClipboard End Sub は出来ました。 そこで、セル範囲A1:B3をクリップボードに貼ろうといろいろやってみました。 一応、下記でできましたが、実際にはもっと広い範囲を取り込みたいので、もっと簡単な方法はないでしょうか? Sub Clip() Dim myStr As String Dim myData As DataObject Dim myCb As Variant Set myData = New DataObject With Sheets(1) myStr = .Range("A1").Value & ":" & .Range("B1").Value & _ vbNewLine & .Range("A2").Value & ":" & .Range("B2").Value & _ vbNewLine & .Range("A3").Value & ":" & .Range("B3").Value End With myData.SetText myStr ', 1 myCb = myData.GetText If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If myData.PutInClipboard End Sub

  • 全てクリップボードに格納されているのでしょうか

    ctrl+cでコピーした場合、 全てクリップボードに格納されているのでしょうか?

  • リンクからクリップボードへコピー

    JavaScript で、クリップボードへテキストを送る方法がありました。 それが以下のようなものですが、 <input type="button" value="クリップボードへ送る" onClick='window.clipboardData.setData("text","テキスト文字")'> これだとボタンを押す時にのみクリップボードへ送られますが、 URL 先へのリンクをクリックしたら、クリップボードコピーできるように したいのです。可能でしょうか。

  • クリップボードにデータを送る(コピーする)には?

    vbaでクリップボードにデータを送る(コピーする)には? エクセルです。 Sub Macro() Selection.Copy End Sub で、クリップボードにデータを送ってることになりますよね? 「どこかのセルをコピーする」ではなく、例えば「abc」という文字をコピーさせて、 いつでも貼り付けられる状態にしたいのですが、vbaでそういうことは可能ですか? Sub Macro() "abc"をクリップボードに送る End Sub 的な事がしたいです。

  • クリップボード

    FTTTPをやってるときに URLをクリップボードにコピーとありますが どうやってクリップボードを見るのですか?

  • クリップボードとは

    文字をコピーすると「クリップボードにコピーしました」と出るのですが、どこにクリップボードはあるのでしょうか。 F805を使ってます。

  • クリップボードにテキストを送る

    MFCのプログラムの中で,テキストのデータをクリップボードにコピーしたいのですが,どうすればよろしいのでしょうか?

  • 「クリップボードにコピーされているデータが多すぎます。」について

    大量なExcelデータを複写してAccessのテーブルに貼り付けてテーブルを 閉じたら以下のメッセージが表示されました。 「クリップボードにコピーされているデータが多すぎます。 データをクリップボードにコピーすると、オブジェクトに対する参照だけがコピーされます。 ソース ドキュメントを閉じると、ソースからすべてのデータが貼り付けられます。 データに量によっては、時間がかかる場合もあります。 このデータをクリップボードに保存しますか?」 どういう事で言っているのでしょうか? 説明して下さい。 宜しくお願いします。

  • applescriptでのクリップボードへの格納方法

    applescript初心者です。 単純なことなのですが今、テキストファイル上の数字を検索しクリップボードに格納するscriptを作成挑戦中です。 tell application "Jedit X" tell front document find string "\\d+" with grep end tell end tell ※\は逆スラッシュ?です。 と、検索までは何とか辿り着きました。 ここから先、エディタ上では選択文字を単純にコピーした状態にするにはどうすれば良いのでしょうか? ご教授頂ければと思います。 よろしくお願いします。

    • ベストアンサー
    • Mac

専門家に質問してみよう