Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
VBAで System.Windows.Clipboardを使いたい
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30358#CommentId83381
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ひでと
 (社会人)
投稿日時
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することでしたので、一応目的は達成しているように思います。
ただ、クリップボードの内容(仕組み)については理解していないとのご指摘、ごもっともですので、勘違いを指摘いただければ助かります。