
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)を指定しないといけないので面倒です。それよりもユーザーフォームを挿入すると自動で参照設定されるのでそちらのほうが簡単です。もちろんユーザーフォームはすぐ解放してしまっても問題ありません。

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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 【マクロ】PasteSpecialメソッドにて、コードが動かない理由が分かりません 2 2023/08/15 20:47
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) ExcelVBAの複数指定範囲の構文 2 2022/05/26 22:39
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数のセルを一括で...
-
エクセルでセルを10個分くらい...
-
Excelで指定した範囲の数値の減算
-
ワードの表のセル 網掛けのコピー
-
EXCEL VBA 複数セルのコピー
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
Excelの入力規則で2列表示したい
-
A1セルに入力したら、入力時間...
-
Excelで同じセルに箇条書きをし...
-
複数の文字列のいずれかが含ま...
-
セルを結合したA4とA5の条件付...
-
エクセルで日付から日にちを削...
-
Excelで表を作り、自動で今月の...
-
空白でないセルの値を返す方法...
-
お肉の下のシートを煮込んでし...
-
【エクセル】指定したセルに入...
-
excelでSUBTOTAL関数を設定した...
-
エクセルオートフィルタで余計...
-
Excelで年月日データから下二桁...
-
EXCELで、結合されたセルに連続...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数のセルを一括で...
-
エクセルでセルを10個分くらい...
-
エクセル空白以外の文字を抽出
-
ワードの表のセル 網掛けのコピー
-
エクセルVBAでフィルタ抽出...
-
Word97のファイルをEx...
-
Excel セルの値を数値と認識しない
-
EXCEL VBA 複数セルのコピー
-
複数の離れた選択範囲をコピー...
-
Excel2007の仕様?
-
エクセルがわからない><;
-
エクセルで合計を・・・
-
WEB上の文章 ⇒ EXCEL...
-
Excelで指定した範囲の数値の減算
-
excel 複数のセル範囲を指定し...
-
エクセルのコピー
-
Wordの表をExcelに張り付け
-
エクセルVBA
-
エクセルについて 式が入ってい...
-
セル内で同じ動作をさせたいです。
おすすめ情報