![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.8ベストアンサー
- 回答日時:
#3の回答者です。
返事を、ありがとうございました。
>1つ質問があります。
>メモ帳貼り付け時、1行あけて、貼り付けられます。つめることはできますでしょうか
一番上が空いているという意味ですね。それなら、私の計算違いでした。失礼しました。
下から見ていくと、「*この部分」は、CR+LF の2文字が残っているのだから、3になる計算でした。
.SetText Mid(buf, 3) '訂正
-------------
With CB
.SetText Mid(buf, 2) '←*この部分 3に変更
.PutInClipboard
End With
ret = Shell("NotePad.exe", vbNormalFocus)
CreateObject("Wscript.Shell").SendKeys "^v", True
On Error Resume Next
Set CB = Nothing
End Sub
-------------
No.7
- 回答日時:
どうしてもコピペしたいなら次のようなものはいかがですか?
--------------------------------------------------------------------
Sub クリップボードセット()
Dim 文章 As String
Dim 範囲 As Long
Dim セル As Long
With Range("A1:A3,A8:A12")
For 範囲 = 1 To .Areas.Count
For セル = 1 To .Areas(範囲).Cells.Count
文章 = 文章 & .Areas(範囲).Cells(セル).Text & Chr$(13) & Chr$(10)
Next
Next
End With
With New MSForms.DataObject
.SetText 文章
.PutInClipboard
End With
End Sub
--------------------------------------------------------------------
※ 「Microsoft Forms 2.0 Object Library」を参照設定しないと下図のようなエラーが出ます。
ただし、参照設定のリストに表示されていないので直接ファイル(FM20.DLL)を指定しないといけないので面倒です。それよりもユーザーフォームを挿入すると自動で参照設定されるのでそちらのほうが簡単です。もちろんユーザーフォームはすぐ解放してしまっても問題ありません。
![「EXCEL VBA 複数セルのコピー」の回答画像7](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/c/542332295_58b8cb6c2f2dd/M.png)
No.6
- 回答日時:
No.5 の追補
たとえばセルを [Ctrl] キーを押しながら、A12,A11,A10,A9,A8,A3,A2,A1の順にクリックして選択すると順番を逆にすることも出来ます。
同じところを複数回は流石にダメですが、順番は好きに出来ます。
No.5
- 回答日時:
選択した部分を1つのファイルとして保存するものを作ってみました。
-------------------------------------------------------------------------
Sub ファイル作成()
Const ファイル名 As String = "test"
Dim フルパス As Variant
Dim 範囲 As Long
Dim セル As Long
ChDir ThisWorkbook.Path
フルパス = Application.GetSaveAsFilename( _
InitialFileName:=ファイル名, _
Title:="保存ファイルを指定して下さい")
If フルパス = False Then Exit Sub
Open フルパス For Output As #1
For 範囲 = 1 To Selection.Areas.Count
For セル = 1 To Selection.Areas(範囲).Cells.Count
Print #1, Selection.Areas(範囲).Cells(セル).Text
Next
Next
Close #1
End Sub
-------------------------------------------------------------------------
※ よく使うファイル名が有れば「Const ファイル名 As String = "test"
」の「test」を変更して下さい、デフォルトでセットされます。(拡張子をつけても良いです)もちろん実行後変更可能です。
※ よく使うフォルダーが有るならば「ChDir ThisWorkbook.Path」の「ThisWorkbook.Path」の代わりにフルパスで指定して下さい(例:「"C:\○○\△△"」など 今はマクロが書かれているブックが有るフォルダーになっています)もちろん実行後変更可能です。
※ 複数のエリアの選択方法はご存知ですよね。エリア固定の方がよければ「Selection」を「Range("A1:A3,A8:A12")」のようにして下さい。
ご回答ありがとうございます。
申し訳ありません。ファイル作成は考えておりません。
別ソフト側のファイルロードは1つずつしかできないため
値が変わるごとにファイル作成→ロードでは手間がかかるためです。
No.4
- 回答日時:
マウスとCtrlキーで複数の連続していないセル範囲を選択してコピーした場合も同様ですので、
これはExcelの仕様であり正攻法では対処できないということになるかと思います。
検索すると
MSFormsのDataObjectを使ってクリップボードにテキストを転送する
WindowsAPIでクリップボードの内容を直接操作する
等の方法が紹介されていますね。
まあしかし、他のセルやテキストボックスやらにテキストをセットしてから
それをコピーするのが面倒が少ないのではないかと思います。
No.3
- 回答日時:
こんばんは。
>メモ帳に貼り付けを行うと
どのように貼り付けるかは別としても、VBAそのものは、そのアプリケーションの中でしか管理できませんから、もし、クリップボード経由で、その内容を管理するなら、まったく考え方が違います。今回は、簡単な方法で書いてみました。
コメントブロック(')を外すと、NotePad に貼り付けられますが、NotePad の起動に時間が掛かるようなら、失敗すると思います。
'//
Sub SeparatedAreasCopy()
Dim buf As Variant
Dim CB As Object
Dim c As Variant
Dim ret As Long
Const CLSID As String = "1C3B4210-F441-11CE-B9EA-00AA006B1A69"
Set CB = GetObject("new:" & CLSID)
For Each c In Range("A1:A3,A8:A12").Cells
buf = buf & vbCrLf & c
Next c
With CB
.SetText Mid(buf, 2)
.PutInClipboard
End With
'以下は、メモ帳に貼り付け
' ret = Shell("NotePad.exe", vbNormalFocus)
' CreateObject("Wscript.Shell").SendKeys "^v", True
' On Error Resume Next
Set CB = Nothing
End Sub
'//
この発想に似たマクロを長年使って、失敗もありませんが、内容は、めちゃめちゃに複雑になっていきます。ファイル名をつけて、テキストにして、それをアプリで読ませるのが一般的です。
ご回答ありがとうございます。
まさに、これです。ありがとうございました。
1つ質問があります。
メモ帳貼り付け時、1行あけて、貼り付けられます。つめることはできますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数のセルを一括で...
-
エクセルでセルを10個分くらい...
-
波線は無理??
-
ExcelのVBA セル内の文字書き換...
-
ワードの表のセル 網掛けのコピー
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
参照先セルに値が入っていない...
-
A1セルに入力したら、入力時間...
-
複数の文字列のいずれかが含ま...
-
リンク元の日付が空白の時リン...
-
Excelの入力規則で2列表示したい
-
excelでSUBTOTAL関数を設定した...
-
Excelで同じセルに箇条書きをし...
-
数式が入ったセルを含めて、数...
-
空白でないセルの値を返す方法...
-
エクセルで日付から日にちを削...
-
Excelでセルに入力されたカラー...
-
エクセル:横長の表を改行して...
-
エクセル ボタンを押すとセルの...
-
お肉の下のシートを煮込んでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数のセルを一括で...
-
エクセルでセルを10個分くらい...
-
エクセル空白以外の文字を抽出
-
エクセルVBAでフィルタ抽出...
-
ワードの表のセル 網掛けのコピー
-
Excel セルの値を数値と認識しない
-
複数の離れた選択範囲をコピー...
-
EXCEL VBA 複数セルのコピー
-
波線は無理??
-
excel ハイパーリンクをまとめ...
-
ExcelをWordにコピー したとき...
-
マクロ 複数セルコピー後、1つ...
-
Excelで指定した範囲の数値の減算
-
WEB上の文章 ⇒ EXCEL...
-
セルの書式設定(選択範囲内で中...
-
Excelで「"」ダブルクォテーシ...
-
エクセル表の縦列へ計算式
-
エクセルがわからない><;
-
エクセルで、表内の同じデータ...
-
可視セル以外の範囲をコピーし...
おすすめ情報