クリップボードにある言葉(例 ぜひご検討下さい。)
をエクセルで選択しているセルの言葉すべてにつけたしたいです。
選択しているセルにはすでにそれぞれ文字列がはいっています。その後に入れたいのです。
例A1とA2をクリックしている。A1には青森県のりんごです。A2にはタイのカレーです。とあります。
マクロを実行すると、クリップボードに現在ある言葉がつけたされて、
A1は青森県のりんごです。ぜひご検討下さい。
A2はタイのカレーです。ぜひご検討下さい。
となります。
マクロのみのご回答をぜひお願いいたします。(関数やその他アドバイスには恐れ入りますが、ポイントをおつけできません)
どうかよろしくお願いいたします。
途中までしかできていないので、ポイントはいりません。
解説もいらないとのことですが、
参照設定だけ、下記の動画を見てください。
VBA クリップボードで検索する
とイロイロなページがヒットします。
http://pckowaza.web.fc2.com/html/excel_vba_clipboard_format_confirm.html
http://officetanaka.net/excel/vba/tips/tips20.htm
https://www.moug.net/tech/exvba/0150091.html
上記を参考にして、
参照設定で
「Microsoft Forms 2.0 Object Library」
と言われるが、見つからない ぉぃぉぃ
で、フォームを挿入すると簡単と書いてあったので、
一つフォームを挿入する
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のセルをコピーしてクリップボードに入れた場合、
テキストとして 反応しないので、バグってます。
'テキスト形式か?
If CB(1) = xlClipboardFormatText Then
以外を見ると、できると思います。
以上、完璧じゃないので、ポイントはゼロでオッケーです。
解決の糸口、回答のたたき台となれば幸いです。
ActiveSheet.Paste で、適当なセルに貼り付けて、その Value をくっつけていく方が良いんじゃないかと思ったり。
2017/08/02 23:36:20ありがとうございます!僕がやってほしいところは十分にできましたので、ポイントもちろん差し上げます。お付き合いありがとうございました!!
2017/08/03 07:56:51