• 締切済み

word2016のVBAでクリップボードの操作

word2016のVBAでクリップボード内のデータを操作することは可能ですか? Application.ClipboardFormats は、エクセルでしか使えないようでした。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

https://www.ka-net.org/blog/?p=9385 のような記事があります。 VBAというよりも、APIの利用です。(ワードの場合なので、普通のVBAで、うまく行かないせいで、行き着いた結果のようです) ーー 幾らかの箇所(WEBの記事の1部分でもよい)をCTRL+Cでコピーしておいて掲載のプログラムを実行すると、それらの文字の文章が累積されてワード文書に張り付きました。 Public Sub Sample4() DoActionOfficeClipboard "すべて貼り付け" <--こっちらを生かすこと 'DoActionOfficeClipboard "すべてクリア" End Sub を実行するとそうなります。 ほかに、注意点は、下記の部分をモジュールの外へ置くこと。 Option Explicit Private Declare Function AccessibleChildren Lib "oleacc" ( _ ByVal paccContainer As IAccessible, _ ByVal iChildStart As Long, _ ByVal cChildren As Long, _ ByRef rgvarChildren As Any, _ ByRef pcObtained As Long) As Long ーーーーー でも質問者は、質問ぶりから「こだわり性」のようだが、深入りしない方がよいのでは。 それと、CTRL+Cした部分が、累積していくようなので、用済み後クリップボードをクリアしておくべきのようです。予想外の貼り付けになりかねない。 小生は、APIの勉強には深入りしない主義なので、上記は受け売りです。

関連するQ&A

  • Access VBAでクリップボード操作

    Accessでクリップボードの操作をしていますが、クリップボード内にデータがあるかないかのチェック方法がわかりません。 ExcelではApplication.ClipboardFormatsが使えるようですが、Acessにはありません。 Accessの場合、エラーを判定しエラーコードで後処理をするサンプルがありましたがそれ以外は方法がないものでしょうか?

  • VBA クリップボード

    エクセル2003で、 offiseクリップボードにある全項目を“全て貼り付け”して、 その後 offiseクリップボードにある全項目を“全てクリア”したいのですが、それをVBAで書けませんか? どうしてもお願いします。 ちなみにパソコンは素人です

  • Wordのクリップボード

    Wordで文字列をコピー(メニュー「編集」-コピー や Control+C)を行うと、 クリップボードに入ります。 しかし、コピーしてすぐ貼り付けを行うときでもクリップボードに入ります。 クリップボードにたくさんアイテム(文字列)が入っていると うざったいので、 できればコピー後すぐ貼り付けるものはクリップボードに入れたくないのですが、 クリップボードに入れるものとそうでないものを分けるにはどうすればよいですか。 また、クリップボードに入っているアイテムのうちの一部のみを消去する(選んだものだけクリア)にはどうすればよいですか。 Word2000です。

  • VB6でDBからクリップボード経由でExcelへ出力する際にクリップボードが開けなくなる

    VB6でOracle9iのDBから変数へ格納し、データを一気に貼り付けられるようにクリップいボードへ一旦コピーしてからExcelへ貼り付けています。 ごくたまにですが、Excelに空白の欄が出てしまい、うまくコピー&ペーストができていない様子です。 調べていくうちにいくつか原因を特定しました。 ・メモリ不足 ・DBからデータが取得できていない ・クリップボードが開けない メモリ不足かと思いましたが、CPU使用率は処理中の最大60%程度で、仮想メモリもかなり余裕あると思います。 データが取得できてないかとも思いましたが検討はずれ。 最後にクリップボードが開けないというメッセージが出ていることに気づきました。 他アプリケーションソフトが立ち上がっている場合はクリップボードへアクセスされている可能性があって、うまくコピー&ペーストができていないと予想されました。 しかし、他アプリケーションはDB操作ツールのObjectBrowser、メモ帳、Excelで、同時にdmpをエクスポートしていました。 クリップボードへアクセスするようなアプリではないように思いますが、これらは端末で操作していなくても定期的にクリップボードへアクセスするようなアプリなのでしょうか?

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

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

  • クリップボードをクリアするVBAコマンド

    今、複数のCSVファイルを一枚のエクセルシートにまとめる マクロ(少しVBAを交えながら)作っています。 CSVファイルを開いて、データすべてをクリップボードにコピーしていく、、という作業の繰り返しマクロです。 1ファイルをシートに移した後、いったんクリップボードをクリアして、次のファイルを読み込みたいのですが、 クリアするコマンドがわかりません。 ご指導ください。

  • クリップボードを排他的に利用する方法

    自アプリケーションが起動している間、他アプリケーションからクリップボードを利用できないようにしたい、 あるいは他のアプリケーションがクリップボードに保存したデータと混ざらないように区別して自アプリケーションがデータを保存しこれを利用できるようにしたい と希望しています。 具体的には、 一定間隔毎に、画面をキャプチャしクリップボードに送り、これをピクチャーボックスに表示する処理を繰り返すプログラムを作成していますが、 この処理の間、たとえばWordなどの他アプリケーションで、コピーや貼り付けの操作を行えないようにしたい あるいはWordなどでコピーしたデータとは完全に区別して保存しこれを独占的に利用したいと希望しています。 このようなことはできるのでしょうか。もしも可能でしたら、どのように記述すればよいのでしょうか。 恐れ入りますが具体的にサンプルコードなどで教えていただければ大変ありがたく存じます。 恐れ入りますが、何卒ご教授いただきたくお願いいたします。 ちなみによくは分からないのですが、EmptyClipboard()関数を使って、クリップボードの所有権を取得できるとの記述を見たのですが、 (http://www.vbvbvb.com/jp/gtips/0051/gEmptyClipboard.html) たとえば、上記のサンプルプログラムで ' クリップボードの所有権を持つウィンドウハンドルを取得 lngClipboardOwner = GetClipboardOwner ' クリップボードの所有権が自フォームと同じときは If lngClipboardOwner = Me.hwnd Then   ' 画面のスナップをクリップボードに送り?   ’またクリップボードのデータの取得を行う? End If といったような感じで指示することは可能なのでしょうか。 もしも可能であれば申し訳ございませんが、上記If文部分の具体的な記述方法をご教授ください。宜しくお願いいたします。

  • クリップボードに保存

    クリップボードに保存する操作をした場合、その保存したクリップボードの内容を張り付けることができるのはワードだけなのでしょうか。

  • ワードのクリップボードがめり込んでしまいました

    マックのパンサーを使っています。ワードで文章を作成していて、クリップボードをよく使います。このクリップボードの窓の上部が、移動しているうちに、一番上にあるバーの下にもぐりこんでしまいました。 今は表示ところから、「officeクリップボード」を選択して、出すか、出さないかしかできません。クリップボードを画面上で移動できないので不便です。これを移動させるにはどうしたらいいでしょうか。教えてください。

    • ベストアンサー
    • Mac
  • クリップボードを空にできません コピーできない

    エクセル上でコピーしようとしたら 「クリップボードを空にできません。 別のアプリケーションがクリップボードを使用している可能性があります」 と言うメッセージが出て、コピーができないのですが クリップボードを空にするにはどうすればいいですか? エクセル上で可能でしょうか?

専門家に質問してみよう