[[20220324170402]] 『VBAでクリップボードに複数格納できないか』(825) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでクリップボードに複数格納できないか』(825)

VBAでクリップボードに複数格納できないのでしょうか?

Dataobjectを使用して
Set CB1 = New DataObject
With CB1
.SetText "文章1"
.PutInClipboard
End With
Set CB2 = New DataObject
With CB2
.SetText "文章2"
.PutInClipboard
End With

と繰り返しても"文章2"のひとつだけしかクリップボードに残らず、
2つともクリップボードに溜めておきたいのですが
方法をご存じの方ご教示いただけませんでしょうか。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 普通にOfficeクリップボードを使う、ではダメなのですか?
 貼り付けたいものを選んで貼り付けるだけだし。
(OK) 2022/03/24(木) 17:32

Officeクリップボードなら、DoEvents: DoEventsで良さそうですが、
( Set cb1 = Nothingを入れないと文字化けするときがあります)
Windowsクリップボードだと1ヶしか入らず文字化けします。何故だろう?

  Sub cliptest()
    Dim cb1 As DataObject
    For i = 1 To 2
        Set cb1 = New DataObject
        With cb1
            .SetText "文章" & i
            .PutInClipboard
        End With
        DoEvents: DoEvents
        Set cb1 = Nothing
    Next
  End Sub

(kazuo) 2022/03/24(木) 21:05


ブラウザ上にその文章を貼り付けたいので、windowsクリップボードに記憶させたいのです・・・。
文字化けするときとしない時があるのも謎です。
(825) 2022/03/25(金) 07:43

# 直接の回答ではないですが。

ウィンドウクリップボードは直前にコピーしたものしか使えないと思っていたら、
最近のWindowsでは、設定により、クリップボードの履歴が使えるのですね。
貼り付けるときに、Windowsロゴキー + V とすれば、履歴が表示され、
選択して貼り付けできるようですね。(形式はテキストのようです。)

文字化けの理由は不明ですが、DataObject側の問題なのでしょうか。
DataObjectを経由せずに、セルを直接コピーすると回避できませんか?

(γ) 2022/03/25(金) 08:22


Widowsクリップボード有効化すると便利ですよね。
VBAで生成した文章をセル上に出力し、セルを直接コピーも検討したのですが
書式がエクセルの書式というか、変に改行してしまったりでうまくテキスト形式で保存ができませんでした。
2回コピーしても一番最後にコピーした文章しかクリップボードに残らないみたいです。
(825) 2022/03/26(土) 16:46


# 回答ではありません。

Windowsクリップボード履歴を利用しているという前提だったのですね。
クリップボード周りは(私の環境では)、結構不可思議な振る舞いをすることが多いです。

ひとつしか保持できないというコードも、
ステップ実行すると、複数保持されたりしませんか?
Sleepで処理待ちしても改善しませんね、ちょっと扱いかねています。
たぶん、すべてを手作業でやるなら問題起きないような気もしますから、
処理自体をコードに書いて、手作業の代わりにステップ実行するなどという妥協案もありそうです。

# 別件ですが、Officeクリップボードを表示したまま、DataObjectを操作すると、
# Excelが落ちたりします。
# 私にとって、クリップボード周りは鬼門のひとつです。
(γ) 2022/03/27(日) 06:30


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.