- ベストアンサー
任意のブックを開き、任意のシートの範囲をコピーして貼り付けるマクロ
タイトル通りなのですが、 アクティブなブックから 任意のブックを開き、任意のシートを選び任意の範囲をコピーして、 元のアクティブなブックに貼り付けるマクロがほしいです。 このとき、この任意のブックのシートにはフィルタがかかっているのですが、 フィルタ解除しなくても不可視セルも含めてすべてのデータをコピーできる方法はありますか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Rangeオブジェクトの Valueプロパティでデータを取得して 貼り付け先のValueプロパティへ代入すれば可能ですよ ' データを受け取る Variant型の変数を用意 Dim Da as Variant da = CopyArea.Value PasteArea.Resize( CopyArea.Rows.Count, CopyArea.Columns.Count).Value = Da といった具合にすれば『値の貼り付け』が可能ですよ 不可視の領域もコピーされます
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録をやって見ましたか。ここに質問する前には、ぜひやってみて出来ないで来たをはっきりさせること。 マクロの記録を見れば自分でやれるでしょう。質問点も整理限定されるし。このままでは回答者に丸投げの感アリ。 >任意のブックを開き、任意のシートを選び任意の範囲をコピーして この部分をどう操作者に指定されるのか、最適な方法を決めるのは、経験が要るが、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を入力すればよいか わかりません。 よろしくお願いします。
お礼
会社で試してみたら、見事にできました! ありがとうございました。
補足
ありがとうございます!! 早速試して、できたらお礼に参ります! ほんとにありがとうございます!