
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")」のようにして下さい。
この回答へのお礼
お礼日時:2017/03/03 19:01
ご回答ありがとうございます。
申し訳ありません。ファイル作成は考えておりません。
別ソフト側のファイルロードは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
'//
この発想に似たマクロを長年使って、失敗もありませんが、内容は、めちゃめちゃに複雑になっていきます。ファイル名をつけて、テキストにして、それをアプリで読ませるのが一般的です。
この回答へのお礼
お礼日時:2017/03/03 18:57
ご回答ありがとうございます。
まさに、これです。ありがとうございました。
1つ質問があります。
メモ帳貼り付け時、1行あけて、貼り付けられます。つめることはできますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複数のセルを一括で...
-
エクセルでセルを10個分くらい...
-
エクセル空白以外の文字を抽出
-
波線は無理??
-
エクセルVBAでフィルタ抽出...
-
A1セルに入力したら、入力時間...
-
エクセルで既に入力してある文...
-
Excelで同じセルに箇条書きをし...
-
Excelの入力規則で2列表示したい
-
excelでSUBTOTAL関数を設定した...
-
Excelで表を作り、自動で今月の...
-
複数の文字列のいずれかが含ま...
-
セルを結合したA4とA5の条件付...
-
IF関数で0より大きい数値が入力...
-
=SUBTOTAL に =COUNTIF の機能...
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
お肉の下のシートを煮込んでし...
-
エクセルオートフィルタで余計...
-
入力したところまでを自動的に...
-
エクセルでセルに何も入力して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの複数のセルを一括で...
-
エクセルでセルを10個分くらい...
-
エクセル空白以外の文字を抽出
-
ワードの表のセル 網掛けのコピー
-
エクセルVBAでフィルタ抽出...
-
Excel セルの値を数値と認識しない
-
エクセルのマクロ
-
エクセルで表示行の値だけの合...
-
複数の離れた選択範囲をコピー...
-
条件を満たすセルをカウントする。
-
エクセル2000のVBAのcutメゾット
-
Excelでセルの内容を画像で貼り...
-
Excel 列の書式を元に戻すマクロ
-
EXCEL VBA 複数セルのコピー
-
WEB上の文章 ⇒ EXCEL...
-
エクセルのマクロについて
-
エクセル2007で総当り表を作り...
-
ExcelのVBA セル内の文字書き換...
-
エクセル もしくは、ワードでき...
-
セルの書式設定(選択範囲内で中...
おすすめ情報