人力検索↓で久々に回答してみた。
q.hatena.ne.jp
※中途半端なコードなのにOKをもらってしまった。
VBA クリップボードで検索する
とイロイロなページがヒットします。
ExcelのVBAで、クリップボードのデータ形式を確認する。〜パソコンの小技・備忘録
Office TANAKA - Excel VBA Tips[クリップボードを操作する(1)]
クリップボードとデータのやりとりをする:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug
上記を参考にして、
参照設定で
「Microsoft Forms 2.0 Object Library」
と言われるが、見つからない ぉぃぉぃ
で、フォームを挿入すると簡単と書いてあったので、
一つフォームを挿入する
参照設定だけ、下記の動画を見てください。
Excel VBA クリップボード 複数選択セルに貼り付け はてな 回答 テスト動画 2017/08/02 【三流君】 - YouTube
www.youtube.com
↑参照設定とテスト動画。
Sub はてな回答テスト20170802() Dim CB As Variant 'クリップボードにはさまざまな形式なので Dim strADDTEXT As String 'クリップボードから追記するテキスト保管 Dim selectRANGE As Range '選択範囲 Dim n As Integer 'N番目 Dim y As Integer '行 Dim x As Integer '列 'クリップボード内のデータ種類を判断 CB = Application.ClipboardFormats If CB(1) = -1 Then Debug.Print "クリップボードには何も入っていません。" Exit Sub End If 'テキスト形式か? If CB(1) = xlClipboardFormatText Then 'テキストデータを取り出す With New MSForms.DataObject .GetFromClipboard ''変数のデータをDataObjectに格納する strADDTEXT = .GetText 'テキストを取得 Debug.Print strADDTEXT '選択されているセルに対して処理を行う Set selectRANGE = ActiveWindow.Selection '複数セル、範囲もあるのでループさせる For n = 1 To selectRANGE.Areas.Count '※nは1から 'セルが範囲選択されている可能性があるので、 Debug.Print n & " " & selectRANGE.Areas(n).Address Debug.Print selectRANGE.Areas(n).Rows.Count Debug.Print selectRANGE.Areas(n).Columns.Count For y = 1 To selectRANGE.Areas(n).Rows.Count '行のループ For x = 1 To selectRANGE.Areas(n).Columns.Count '列のループ Debug.Print selectRANGE.Areas(n).Cells(y, x).Address Debug.Print selectRANGE.Areas(n).Cells(y, x).Value selectRANGE.Areas(n).Cells(y, x).Value = selectRANGE.Areas(n).Cells(y, x).Value & strADDTEXT Next x Next y Next n End With End If End Sub
↑のコードを貼り付けて、テストしてみてください。
Debug.Print は 必要ないので、消してください。
動画の後半で、テスト時、Excelのセルをコピーしてクリップボードに入れた場合、
テキストとして 反応しないので、バグってます。
参照設定だけ、下記の動画を見てください。
※冒頭の動画と一緒です・・・
www.youtube.com
↑参照設定とテスト動画。