NTT-X Store d払いご利用でdポイントが貯まる使える!

改行を含むテキストをVBAでコピーし、Excelのセルに貼り付けると(ActiveSheet.Paste)、
①のように2行に貼り付けられてしまいます。

②のように1つのセルに貼り付ける事は可能でしょうか?
ご教授をお願いします。

「Excel VBAで改行を含む文字列を1」の質問画像

質問者からの補足コメント

  • コピー元のデータは、Excel以外からコピーします。
    VBAでWebスクレイピングした結果を、Excelに貼り付けようとしています。
    その為、コピー内容はブラウザ画面で、[Ctl+A]-[Ctl+C]した状態とお考え下さい。

      補足日時:2018/03/15 01:26

A 回答 (3件)

クリップボードデータの貼付けと言う事でしょうか?


それでしたら以下のような感じではいかがでしょうか?
--------------------------------------------------------------------------------
Sub クリップボードデータ貼付け()
Dim クリップボード As New DataObject
クリップボード.GetFromClipboard
Range("E8").Value = クリップボード.GetText
End Sub
--------------------------------------------------------------------------------
※ 事前に「Microsoft Forms 2.0 Object Library」を参照設定しておいてください。(参照設定の方法が判らなければ、ブックに「UserForm」を挿入して下さい。自動で参照設定されます。もちろんすぐ「UserForm」を削除してもかまいません)
    • good
    • 0
この回答へのお礼

助かりました

GooUserラック様

夜間にも関わらず、早急に回答いただきありがとうございます。
こちらの内容で実現可能となようです。
後ほど組み込んで確認いたします。

丁寧にご説明いただきありがとうございます。

お礼日時:2018/03/15 03:35

こんにちは。



>VBAでWebスクレイピングした結果を、Excelに貼り付けようとしています。
一例を書いて差し上げてもよいのですが、Webスクレイピングでは、そのような操作はないはずですが……。どちらかというと、IE の ExecWb コマンドのようです。
[Ctl+A]-[Ctl+C]

ご質問の内容は、私にはかなり難しいものだと思いました。
ああしたらよい、こうしたらよいとは思うものの、かなりの難問です。
全画面をシートに貼り付ける前に、クリップボードの情報を結合するとなると、一旦、テキスト化して、そのテキストを正規表現検索で改行コードを書き換えて、再び、テキストバッファからクリップボードに戻すか、そのまま貼り付けなくてはなりません。そういうコードを書くことは可能ですが、全体のコードが見えていないままでは、それは提示しにくいのです。

貼り付けられたものを、加工するスタイルではいけないのでしょうか。

これは、一旦貼り付けた後に、マージ(結合)するということです。
'//
Sub TestHeightMerging()
Dim c As Range
Dim Rng As Range
If TypeName(Selection) = "Range" Then
 Set Rng = Selection.Cells
 If Rng.Count > 1 Then
  For Each c In Rng
  If c.Value <> "" Then
  buf = buf & vbLf & c.Value
  End If
  Next
 End If
End If
Rng.ClearContents
Rng.Cells(1).VerticalAlignment = xlTop
Rng.Cells(1).Value = Mid(buf, 2)
End Sub

これを、ショートカットにすれば、良いと思います。

そうでなければ、最初のWebスクレイピング(クローリング)を、書き換えたほうが速いと思います。なぜなら、Webデータの innerHTML/outerHTMLには、もともと区分けのコードが書いてあるのですから。
    • good
    • 0
この回答へのお礼

WindFaller様

VBAもHTMLもあまり知識が無いもので、要領を得ず申し訳ないです。
Webで検索した結果から条件に一致したものを書き出したいのですが、
50件くらいを目視で実施すると時間がかかってしまい、自動化できないかと検討しています。
私の考えは、1個検索した結果を1セルに貼り付けて、
それを50回繰り返そうというものでした。(取り合えず全部コピーして、情報収集は後から考える。)

GetFromClipboardで1セルに入力する事は出来ました。
ですが、コピー元が何文字かもわからないので、
直接1セルに貼り付けるのは問題があるかと後から気付きました。

普通にExcelに貼り付けて、必要な情報だけコピーする事を繰り返す方が効率的だと気付けました。
マージ(結合)について参考にさせていただきます。

丁寧にご説明いただきありがとうございました。

お礼日時:2018/03/17 00:49

普通に「Range("A1").Copy Destination:=Range("E8")

」ではダメなのですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング