重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルのA1~A10にdata1~data10というデータがあるとします。

このdata1~data10というセルごとの値をクリップボードにそれぞれ格納するにはどうしたらいいでしょうか?

コントロール+Cでコピーをすればクリップボードにそれぞれのセルの値(data1~data10)が格納されるのですが、同じことをVBAでしてもクリップボードには格納できないですよね?

エクセルで作ったデータを別のアプリにコピペする必要があるのですが、いちいちコピペすると大変なのでまとめてクリップボードに格納にウィンドウズキー+Vでクリップボードから選択してペーストすることを考えています。

なお、別のアプリにCSVでインポートするにはアプリの改変が必要で費用がかかるということで、インポートする方法はできません。(~_~;)

A 回答 (2件)

No1です。



これで、どうでしょうか。
標準モジュールに登録してください。
参照設定で「参照可能なライブラリ ファイル」に「Microsoft Forms 2.0 Object Library」を参照するようにしておいてください。
現在、1行処理するごとに300ミリ秒、待機しています。
もし、うまくいかない場合は、この値を大きくしてください。
Dim wait_time As Long: wait_time = 300

-------------------------------------------------
Sub Macro2()
Dim wrow As Long
Dim cbData As New DataObject
Dim wait_time As Long: wait_time = 300 '300ミリ待機
'1~10行まで繰り返す
For wrow = 1 To 10
Cells(wrow, "A").Select
'DataObjectにセルの内容を格納
cbData.SetText Cells(wrow, "A").Value
'DataObjectのデータをクリップボードに格納
cbData.PutInClipboard
Application.Wait [Now()] + wait_time / 86400000
DoEvents
Next
End Sub
    • good
    • 0
この回答へのお礼

年始の忙しい中、回答ありがとうございます。

できました!待機時間を短くするとエラーがでますが、300ミリ秒待機させれば大丈夫でした。ありがとうございます。m(__)m

お礼日時:2025/01/05 16:04

マクロの記録で作成できます。


以下は、マクロの記録で作成した結果です。

Sub Macro1()
'
' Macro1 Macro
'

'
Range("A1:A10").Select
Selection.Copy
End Sub
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

別アプリにコピペするためにA1~A10のそれぞれのセルの値を別々にクリップボードに格納したいのです。お示しいただいた方法ではA1~A10の値をまとめてクリップボードに格納することになってしまいますよね。

お礼日時:2025/01/04 12:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A