[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数セルのセルを一括クリップボードにコピー』(かつ)
お世話になります。まったくの初心者でいろいろ検索しているのですがわかりませんので質問いたします。
複数セル(例えばA3:E8)に文字を入力してるシートを作り、入力している文字列の内容をすべてコピーした文字列(5列は連続した文字列に、見た目通りに改行して6行の文字列)を別のテキストソフト(例えばメモ帳)に貼り付けたいです。マクロでクリップボードにコピーするところまで作りたいのですが、うまくいきません。宜しくお願い致します。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
(もこな2) 2022/01/23(日) 11:18
Sub テスト()
Dim myCopy As New MSForms.DataObject
With myCopy
.SetText B3: E6.Value
.PutInClipboard
End With
End Sub
(かつ) 2022/01/23(日) 11:40
(1)DataObjectに【Range("B3:E6").Value】を格納して (2)(1)をクリップボードに格納すればいいわけですよね。
・・・と書きかけてこちらで↓のようにして試したんですが型が一致しませんと出ちゃうんですよね。
Sub テスト() Dim myCopy As New DataObject
With myCopy .SetText ActiveSheet.Range("B3:E6").Value .PutInClipboard End With End Sub
なので、セル範囲を一旦、ループ処理とJoin関数を使って文字列に直し、格納するというのはどうでしょうか?
Sub テスト_改() Dim myCopy As New DataObject Dim セル範囲 As Range Dim buf As String, i As Long Dim 配列 As Variant
Set セル範囲 = ActiveSheet.Range("B3:E6") For i = 1 To セル範囲.Rows.Count 配列 = WorksheetFunction.Transpose(WorksheetFunction.Transpose(セル範囲.Rows(i).Value)) buf = buf & Join(配列, "") & vbLf Next
buf = Left(buf, Len(buf) - 1)
With myCopy .SetText buf .PutInClipboard End With End Sub
もうちょっと良いアプローチがあるかもしれませんが、私だとこれ以上は思いつかなそうです。
(もこな2) 2022/01/23(日) 12:48
Sub test() Dim myCopy As New MSForms.DataObject Range("A3:E8").Copy With myCopy .GetFromClipboard .SetText Replace(.GetText, vbTab, "") .PutInClipboard End With End Sub
(kazuo) 2022/01/23(日) 23:52
buf = Replace(.GetText, vbTab, "") Application.CutCopyMode = False .SetText buf でも メモ帳やexcelシートには貼り付けられるが、 この方式vbeペインに貼り付けるとexcelクラッシュする。 (もこな2) 2022/01/23(日) 12:48では、vbeペインには貼り付けられない。
(kazuo) 2022/01/24(月) 07:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.