投稿者 ひでと  (社会人) 投稿日時 2018/9/6 16:24:51
ありがとうございます。

>まずは、今回扱う予定のクリップボードフォーマットを教えてください。
>CF_TEXT では無いのですよね?
>https://docs.microsoft.com/en-us/windows/desktop/dataxchg/standard-clipboard-formats

>形式が不明な場合は、ツール等で調べておいてください。
>再加工が目的なら、フォーマットがわからないと先に進めませんので。
>https://www.officedaytime.com/clipmm/
>http://www.freeclipboardviewer.com/
クリップボードの仕組みは良く理解しておりません。
クリップボードに代入しているのはVB2005でMy.Computer.Clipboard.SetText() を使用しています。


> そこで、WordのClipboadにVBからデータを送ることも考えるのですが、
>クリップボードは全アプリケーションで共有されるものなので、
>「WordのClipboad」という表現には違和感があります。😅
>Word VBA には Clipboard という名のオブジェクトやメンバーも無いはずですし。
WordにはClipboardが無いのですね。
WordのVBAでPasteメソッドで貼り付けできるので、なにかのデータ領域が有るのだと思い、VB2005から利用できないかと思ったわけです。

>また、ここでいう「VB」とは、どのバージョンの Visual Basic のことでしょうか?
>System.Windows.Clipboard というからには、.NET Framework 3.0 以降のはずなので、
>とりあえず VB2005 以下ということは無さそうですが。
VB2005を未だに使用しています。

> WordのClipboadにデータが転送されているということだと思うのですが
>どういう意味でしょうか?
>(クリップボードの仕組みを、正しく理解されていないような気が…)

マイクロソフトのオフィスに共通する、クリップボードに相当するデータ領域が有るのかと想像していました。 
>Range.Paste メソッド 
>クリップボードの内容を、指定範囲に挿入します。
と有り、「Office クリップボードを使用する」等の表現がネット上でありましたので。

その領域はVBから参照できるSystem.Windows.Clipboardの領域とは別領域で、
Wordで貼り付けをすると、System.Windows.ClipboardのデータをWordがオフィスのクリップボードにコピーし、さらにその内容をDocumentに貼り付けるという処理がWordで自動で行われるのかと想像していました。

現状、WordのVBA上で、RangeオブジェクトにPastし、RangeオブジェクトをDeleteする、その間にデータを取得してみようと以下のようにしてみました。
Function ClipbordText() As String
    Dim objRange As Range
    Set objRange = Selection.Range
    objRange.Paste
    ClipbordText = objRange.Text
    objRange.Delete
End Function
これで、VB2005のMy.Computer.Clipboard.SetText()で作成したClipboardの中のテキストが取得できました。今回の目的としては、このテキストを加工して、再びPastすることでしたので、一応目的は達成しているように思います。
ただ、クリップボードの内容(仕組み)については理解していないとのご指摘、ごもっともですので、勘違いを指摘いただければ助かります。