
セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。
http://oshiete.goo.ne.jp/qa/5650002.html#16327676 の回答ANo2を見て
Sub test01()
Dim myData As DataObject
Dim myCb As Variant
Dim x
x = "TESTデータです。"
Set myData = New DataObject
myData.SetText x
myCb = myData.GetText
myData.PutInClipboard
End Sub
は出来ました。
そこで、セル範囲A1:B3をクリップボードに貼ろうといろいろやってみました。
一応、下記でできましたが、実際にはもっと広い範囲を取り込みたいので、もっと簡単な方法はないでしょうか?
Sub Clip()
Dim myStr As String
Dim myData As DataObject
Dim myCb As Variant
Set myData = New DataObject
With Sheets(1)
myStr = .Range("A1").Value & ":" & .Range("B1").Value & _
vbNewLine & .Range("A2").Value & ":" & .Range("B2").Value & _
vbNewLine & .Range("A3").Value & ":" & .Range("B3").Value
End With
myData.SetText myStr ', 1
myCb = myData.GetText
If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then
Exit Sub
End If
myData.PutInClipboard
End Sub
No.5ベストアンサー
- 回答日時:
横いりすみません。
必要範囲をCoryしたら、
DataObjectのGetFromClipboardメソッドを使ってクリップボードデータを取得します。
そこからさらにDataObjectのGetTextメソッドを使うとテキスト文字列だけ取り出せます。
その後、DataObjectをClearして
あらためて取り出したテキスト文字列をSetTextすれば良いです。
各メソッドについては、DataObjectのヘルプを見て下さい。
ただし、OutlookならCtrl+VまでVBAでやれば良い気がしますが。
http://outlooklab.wordpress.com/
この辺りを参考にしてみると良いかと。
Sub try()
Const olFolderInbox As Long = 6
Const olMailItem As Long = 0
Dim obj As Object
Dim ins As Object
Dim m As Object
Dim tmp As String
If TypeName(Selection) <> "Range" Then Exit Sub
Selection.Copy
With New DataObject
.GetFromClipboard
tmp = .GetText
.Clear
End With
Application.CutCopyMode = False
On Error Resume Next
Set obj = GetObject(, "Outlook.Application")
On Error GoTo 0
If obj Is Nothing Then
Set obj = CreateObject("Outlook.Application")
obj.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Display
End If
For Each ins In obj.Inspectors
With ins.CurrentItem
If .MessageClass = "IPM.Note" Then
If Not .Sent Then
Exit For
End If
End If
End With
Next
If ins Is Nothing Then
Set m = obj.CreateItem(olMailItem)
Else
Set m = ins.CurrentItem
Set ins = Nothing
End If
m.body = tmp
m.Display
Set m = Nothing
Set obj = Nothing
End Sub
No.7
- 回答日時:
#3です。
何故か盛り上がっていますね。一つ思いついてしまいました。UserFormに、テキストボックスと、コマンドボタンを一個置きます。
UserForm1をモードレスで表示させ、セルを選択してコマンドボタンを押すと、テキストボックスや、単独セル内に貼り付けられる形で文字列がクリップボードにコピーされますので、質問者様のなさりたい事が出来ているのではと思います。
UserForm1のコードは下記だけです。ご参考まで。
Private Sub CommandButton1_Click()
Selection.Copy
With Me.TextBox1
.Paste
.SetFocus
.SelStart = 0
.SelLength = Len(Me.TextBox1)
.Copy
End With
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1.MultiLine = True
End Sub
No.6
- 回答日時:
げっ
>必要範囲をCoryしたら、
必要範囲をCopyしたら、
..です...orz
No.4
- 回答日時:
こんな感じじゃ?
Sub てすと()
Dim rC As Long, rR As Long
Dim strT As String
Dim myStr As String
Dim myData As DataObject
'Dim myCb As Variant
Set myData = New DataObject
Range("A1:D10").Select 'か適当に選択しておいて
For rR = 1 To Selection.Rows.Count
For rC = 1 To Selection.Columns.Count
strT = strT & vbTab & Selection(1).Offset(rR - 1, rC - 1)
Next rC
strT = Mid(strT, 2)
myStr = myStr & vbCrLf & strT
strT = ""
Next rR
myStr = Mid(myStr, 3)
myData.SetText myStr ', 1
'myCb = myData.GetText
If MsgBox("データ" & vbNewLine & myStr & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then
Exit Sub
End If
myData.PutInClipboard
End Sub
ありがとうございます。
思った通りの動きです。
お礼が遅くなり、大変申し訳ございません。
いろいろなトラブルがあり、このサイトを見に来れませんでした。
No.3
- 回答日時:
添付図はxl2000の例ですが、セルをクリップボードにコピーすると、ここに上がっている全ての形式で格納される事になります。
RangeObjectだけで貼り付けられる訳ではありません。テキストの他にも、画像形式とか色々ありますね。例えばBiff?というのは、2003までのエクセルネイティブなデータ構造です。
なお、2列表示の図にする際に、clipbrd.exeで表示できない、グレー表示されている形式の部分は見難いので少し濃い色に変えてあります。
さて本題ですが、Range("A1:C3").Copyを実行後に、テキストエディターに貼り付けると、TAB区切りで貼り付けられます。
emaxemax様が、Outlookに貼り付けるときに期待した姿にならないとすると、Outlook側の問題だと思います。

ありがとうございます。
思った通りの動きです。
お礼が遅くなり、大変申し訳ございません。
いろいろなトラブルがあり、このサイトを見に来れませんでした。
No.2
- 回答日時:
>AとB列のテキストをコロンで結んだのは、それしかやりようがなかったからそうしましたが、本当はTabキーを打ったようにしたいのです。
If C.Column = 1 Then 'C.Column = 1はA列の意味
myStr = myStr & vbNewLine & C.Value
Else
myStr = myStr & vbTab & C.Value
End If
と":"をvbTabにすればいいです。
>やはりループさせる方法しかないのでしょうか?
本当にあなたがしたいことが、どういうことなのかしりませんが、通常セルをコピーしてExcelのクリップボードに入れたいだけであれば、以下の1行で用が足せます。
Range("A1:B100").Copy
何度もありがとうございます。
やりたいことは、一番最初に書いたとおり、
セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。
Range("A1:B100").Copy
では、テキストではなくRangeObjectが入ってしまいます。
Ctrl+VキーでOutlookメールの本文にテキストで貼り付けたいのです。
No.1
- 回答日時:
以下の様な感じでどうでしょうか
Sub Clip()
Dim myStr As String
Dim myData As DataObject
Dim myCb As Variant
Set myData = New DataObject
Dim C As Range
With Sheets(1)
For Each C In .Range("A1:B100")
If myStr = "" Then
myStr = C.Value
Else
If C.Column = 1 Then 'C.Column = 1はA列の意味
myStr = myStr & vbNewLine & C.Value
Else
myStr = myStr & ":" & C.Value
End If
End If
Next C
End With
myData.SetText myStr ', 1
myCb = myData.GetText
If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then
Exit Sub
End If
myData.PutInClipboard
End Sub
さっそくありがとうございます。
やはりループさせる方法しかないのでしょうか?
あと、AとB列のテキストをコロンで結んだのは、それしかやりようがなかったからそうしましたが、本当はTabキーを打ったようにしたいのです。
わがまま言ってすみません。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Excel(エクセル) 【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて 3 2023/03/08 17:41
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて
Excel(エクセル)
-
【VBA】エクセルで値のみクリップボードにコピーするコードについて(貼り付け時の空白削除)
Visual Basic(VBA)
-
EXCEL/VBA 変数の値をクリップボードにコピーする方法
Visual Basic(VBA)
-
-
4
セルの値だけクリップボードにコピーするマクロ
Visual Basic(VBA)
-
5
クリップボードの内容を変数に取り込みたい(EXCEL VBA)
Visual Basic(VBA)
-
6
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
7
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
8
Excel コピーしたセルの範囲を取得するには?
Excel(エクセル)
-
9
VBAでセルがコピーされているか判定したい
Excel(エクセル)
-
10
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
【EXCEL2002】「貼り付け先の書式に合わせる」をVBAで実行したい
Excel(エクセル)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
16
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
17
セル内のテキストをクリップボードにコピーするVBA
Excel(エクセル)
-
18
VBAで○○:○○と表示させたいのに小数で0.53125のように表示さ
Access(アクセス)
-
19
EXCEL VBA 複数セルのコピー
Excel(エクセル)
-
20
二次元配列をクリップボードにコピーするためには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで連続データから、数...
-
excelで、スクロールをすると限...
-
複数のセルの入力内容を一度に...
-
EXCEL アルファベットと数字の...
-
excelで1行ごとに一気に削除す...
-
エクセルの画面で十字マークが...
-
セルをクリックすると付箋のよ...
-
エクセル 数値を全て「1」にす...
-
エクセル 画面上の行数を調節...
-
エクセルでハイパーリンクのU...
-
Excel 小さくなったスクロール...
-
エクセルでカーソルが四方に矢...
-
エクセルで、結合したセルを選...
-
エクセルで1つおきに列を削除...
-
エクセルVBA 複数行にまたがっ...
-
Excel選択を繰り返すとセルの色...
-
列選択で勝手に広範囲に範囲選...
-
Excelで表のデータを並び替えた...
-
エクセル 複数セルを選択する...
-
ピポットテーブルエラー解決方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルで連続データから、数...
-
複数のセルの入力内容を一度に...
-
エクセルの画面で十字マークが...
-
EXCEL アルファベットと数字の...
-
excelで1行ごとに一気に削除す...
-
エクセル 画面上の行数を調節...
-
セルをクリックすると付箋のよ...
-
Excel 小さくなったスクロール...
-
エクセル 数値を全て「1」にす...
-
エクセルでハイパーリンクのU...
-
Excelで表のデータを並び替えた...
-
エクセルで任意のセルをクリッ...
-
エクセルで1つおきに列を削除...
-
エクセルで、結合したセルを選...
-
Excel選択を繰り返すとセルの色...
-
エクセルで0を除いて昇順に並...
-
エクセルでカーソルが四方に矢...
-
ピポットテーブルエラー解決方法
-
Shift押しながら、矢印ボタンで...
おすすめ情報