プロが教えるわが家の防犯対策術!

タイトル通りなのですが、
アクティブなブックから
任意のブックを開き、任意のシートを選び任意の範囲をコピーして、
元のアクティブなブックに貼り付けるマクロがほしいです。

このとき、この任意のブックのシートにはフィルタがかかっているのですが、
フィルタ解除しなくても不可視セルも含めてすべてのデータをコピーできる方法はありますか?

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

A 回答 (2件)

Rangeオブジェクトの Valueプロパティでデータを取得して


貼り付け先のValueプロパティへ代入すれば可能ですよ

' データを受け取る Variant型の変数を用意
Dim Da as Variant
da = CopyArea.Value
PasteArea.Resize( CopyArea.Rows.Count, CopyArea.Columns.Count).Value = Da
といった具合にすれば『値の貼り付け』が可能ですよ
不可視の領域もコピーされます

この回答への補足

ありがとうございます!!
早速試して、できたらお礼に参ります!
ほんとにありがとうございます!

補足日時:2008/06/16 05:41
    • good
    • 2
この回答へのお礼

会社で試してみたら、見事にできました!
ありがとうございました。

お礼日時:2008/06/16 18:17

マクロの記録をやって見ましたか。

ここに質問する前には、ぜひやってみて出来ないで来たをはっきりさせること。
マクロの記録を見れば自分でやれるでしょう。質問点も整理限定されるし。このままでは回答者に丸投げの感アリ。
>任意のブックを開き、任意のシートを選び任意の範囲をコピーして
この部分をどう操作者に指定されるのか、最適な方法を決めるのは、経験が要るが、INPUTBOXと
Application.InputboxのType:=8で範囲指定させては。
>フィルタがかかっているのですが、
フィルタにかかっていて見えない行も、コピー張り付け操作ではコピー(張り付け)されるはず。
>元のアクティブなブックに貼り付ける
この張り付け始点はどうする?

この回答への補足

失礼しました。
セルJ1にファイル名を入れ
Workbooks.Open Filename:= _
"C:\ & Range("J1").Value & ".xls"
でファイルを開き、
Dim CopyArea As Range
Dim PasteArea As Range
Set CopyArea = Application.InputBox(prompt:= _
"コピー元を指定して下さい", Title:="コピー元", Type:=8)
Set PasteArea = Application.InputBox(prompt:= _
"貼り付け先を指定して下さい", Title:="貼り付け先", Type:=8)
CopyArea.Copy PasteArea

上のようにコピーしたいのですが、この方法だとブックを選べません。
また、フィルタがかかっているものをコピーしてそのまま貼り付けると
可視セルしか貼り付けられません。
また、ただの貼り付けではなく、値貼り付けにしたいのですが、
どのように、PasteSpecial Paste:=xlPasteValuesを入力すればよいか
わかりません。
よろしくお願いします。

補足日時:2008/06/15 14:32
    • good
    • 0

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