[[20190326130236]] 『改行データのクリップボードへのコピー』(ねる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『改行データのクリップボードへのコピー』(ねる)

こんにちは。
VBA勉強中のひよっこです。

セルA1とB2とB3:B12に入力されている文字列を改行を入れつつクリップボードにコピーして、ウェブの社内フォーラムに活用したいと考えております。

手探りでソースを書いてみたのですが、エラーでどこが悪いのか良く分かりません。

手ほどき頂けたら幸いです。

よろしくお願い致します。

Sub test()

Dim i As String
Dim x As Object

Set x = New DataObject

i = Range("A1") & vbCrLf & Range("B2") & vbCrLf & Range("B3:B12")

    With x
        .SetText i
        .PutInClipboard
    End With

End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 >i = Range("A1") & vbCrLf & Range("B2") & vbCrLf & Range("B3:B12") 
 これをどういう連結を期待しているのか不明ですが

 i = Join(Array(Range("A1").Value, Range("B2").Value, Join([transpose(B3:B12)])), vbLf)
 違っている場合は期待する結果を提示した方が分かりやすいですね。
(seiya) 2019/03/26(火) 13:26

 xの型宣言がちがっています。

 Dim x As DataObject
 
 それと、DataObjectオブジェクトを使うには、
 Microsoft Forms 2.0 Object Library への参照設定が必要です。

 プロジェクトにUserFormを追加すると、勝手に参照設定が追加されるので、
 UserFormを一回追加して、またすぐ解放するといいです。
(でれすけ) 2019/03/26(火) 13:33

 あ、そか
 参照設定されていれば、Object型でも入るのか。
 失礼しました。
(でれすけ) 2019/03/26(火) 13:35

seiyaさん、でれすけさん、ご教授感謝致します。

期待する結果ですが、

A1
B2
B3:B12

これらのセル全てに文字列が入っているのですが、

例としまして

A1=鈴木一郎
B2=タスクの表題
B3=タスクA
B4=タスクB
B5=タスクC
B6=タスクD
B7=タスクE
B8=タスクF
B9=タスクG
B10=タスクH
B11=タスクI
B12=タスクJ

と入力されているものを、WEBの社内フォーラムに貼り付ける為、
マクロを実行する事でクリップボードに上記を改行つきでコピーしたいと考えております。

ご教授頂いたソースを理解する為、一単語ずつ分解して調べてみたいと思います。
(ねる) 2019/03/26(火) 14:14


 私の想定通りですが、
 B3:B12 の連結はスペースで分割されています。

 もしスペース以外の文字列、又はスペースを挟まないでということなら

 Join([transpose(B3:B12)],"文字列")

 にしてください。
(seiya) 2019/03/26(火) 14:19

seiyaさん、追加ご指導、恐縮です。

とても勉強になりました♪

ありがとうございました^^
(ねる) 2019/03/26(火) 14:44


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.