投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/9/6 18:45:39
>> Word VBA には Clipboard という名のオブジェクトやメンバーも無いはずですし。
> WordにはClipboardが無いのですね。
Word ではなく Word VBA の話をしています…。

VBA エディタ上で [F2] キーを押して表示されるオブジェクト ブラウザー上にも
「Clipboard」という名のオブジェクトは用意されていませんよね、という話。

ちなみに VB2005 には「Clipboard」という名のオブジェクトが用意されていて、
たとえば、現在保持されているデータ形式の一覧を得るといったこともできます。

ListBox1.Items.Clear()
For Each fmt As String In Clipboard.GetDataObject().GetFormats()
    ListBox1.Items.Add(fmt)
Next


メモ帳のテキストをコピーしていた場合は、"Text" や "UnicodeText" 形式、
エクスプローラーでファイルを選択してコピーした場合には
"File" や "FileW" 形式などが並んでいることを確認できます。


> WordのVBAでPasteメソッドで貼り付けできるので、
はい。Copy / Cut / Paste メソッドを通じての単純操作程度であれば、
Word VBA からでも行えます。

しかし上記 VB2005 の例のように、クリップボード内に格納されている
データ形式を列挙したり、あるいは特定の形式のみを再加工して
書き戻すためのクラスやメソッドは、「標準では」用意されていません。
(Word 上での列挙や加工が必要な場合は、前々回の回答をご覧ください)


> マイクロソフトのオフィスに共通する、クリップボードに相当するデータ領域が有るのかと想像していました。 
クリップボードは、OS が 1 つだけ管理している、データ共有のためのリソースです。

その「Windows 上で単一の共有資源」であるクリップボードを、
VB2005 と Word VBA のそれぞれから読み書きしているだけです。

他のアプリがコピー操作を行うと、前に保持されていた内容が失われるのも
単一の共有資源であるがゆえのことです。


> 「Office クリップボードを使用する」等の表現がネット上でありましたので。
OS からクリップボード変更通知(クリップボード チェイン)を受け取ると、
Office はその内容を履歴として退避する機能があります。
それが Office クリップボード。

Word VBA の Application.ShowClipboard メソッドによって
Word にトグル表示されるペインがこれですね。

しかしこれは、あくまでデータを複製しているだけあり、
「Windows のクリップボード」はあくまでも一つだけです。

また、この履歴データの内容を直接再加工するような機能は
Word VBA には用意されていないと思います。