[[20190606112844]] 『VBA クリップボードへの貼り付け』(ポンコツ太郎) ページの最後に飛ぶ

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

 

『VBA クリップボードへの貼り付け』(ポンコツ太郎)

超初心者です。

M2から末尾セルまでのデータをクリップボードに格納したいのですが、
うまくいきません。

書いたソースはこちらです。

Private Sub CommandButton2_Click()

Dim clip As Long

clip = Range(("M2"), Cells(Rows.Count, 13).End(xlUp)).Copy

    With New MSForms.DataObject
        .SetText clip
        .PutInClipboard
    End With

End Sub

ご指導、よろしくお願いします!

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


Range型のままで良ければ、Range("M2", Cells(Rows.Count, 13).End(xlUp)).Copy の1行だけでおしまいでは?

貼り付ける際に、ExcelのRange型に対応していないアプリならば勝手に文字列だけ貼れますし、Excelなら「値貼り付け」しても良いし。
(???) 2019/06/06(木) 11:59


???様、ありがとうございます!

コピー範囲が点線で囲われるのを表示せずに?または解除した状態でテキストエディタ―に貼り付けられる方法はありますでしょうか?

この点線を表示したくなかったので、クリップボードに貼り付ける方法が良いのかと思い、
ソースを書いてみたら撃沈したので・・・。

クリップボードに格納できなくても、解決策があればご指導いただけると助かりますm(__)m
(ポンコツ太郎) 2019/06/06(木) 12:13


読み返してみたら分かりにくかったので整理させていただきますと、

1.M2から末尾セルまでのデータをコピーしたい
2.でもコピー範囲を示す点線の囲いは表示したくない
3.コピーしたデータをテキストエディタに貼り付けたい

です。

分かりにくくてすみません。

よろしくお願いします!
(ポンコツ太郎) 2019/06/06(木) 12:18


んー、こんなのではどうですかね?
 Private Sub CommandButton2_Click()
    Dim clip As Variant

    clip = Range("M2", Cells(Rows.Count, "M").End(xlUp)).Value
    With New MSForms.DataObject
        .SetText Join(WorksheetFunction.Transpose(clip), vbLf)
        .PutInClipboard
    End With
 End Sub
(???) 2019/06/06(木) 13:15

 単純に画面描写を止めてコピペ後、カット&コピーモードを解除すれば良いのでは?
(BJ) 2019/06/06(木) 13:21

 ああ、クリップボードにデータを残しておきたいのかね?
 なんかマクロ使う意味が無いような気がするけど?
(BJ) 2019/06/06(木) 13:26

???様、ありがとうございます!

完璧です!!!

頂いたソース、しっかり理解して自分でもスムーズに書けるようにします!
(ポンコツ太郎) 2019/06/06(木) 14:02


コメント返信:

[ 一覧(最新更新順) ]


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