- ベストアンサー
エクセルのコピー
エクセルで別のエクセルファイルに列コピーをしようとしています。 やり方として、 (コピー元AのI・J列からコピー先BのI・J列にコピーをする) (1)AファイルをActivateにする。 (2)AファイルのシートをSelectする。 (3)Worksheets("シート名").Columns("I:J").SelectでIからJ列を選択 (4)Selection.Copy (5)Bファイルに対して、(1)(2)(3)をする。 (6)ActiveSheet.Paste としています。 すると、(6)で"そのコマンドは複数の選択範囲に対して実行できません。”と いうエラーになります。何がおかしいのかわからないのですが、 正しいやり方を教えていただけませんでしょうか? それともうひとつ、ファイルを閉じるときに"クリップボードに大きな情報があります。"というメッセージがでてしまいます。 これをでなくする方法を教えてください。 お願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
まだ確認中ですが、「複数の選択範囲に対して~」というエラーは普通のコピー&ペーストでも出ることがありますよね。 コピーする場所は、I列とJ列を別々ではなく、I列からJ列まで、と連続したセルですか? 連続していない部分を選択して貼り付けるときに出るエラーのような気がするのですが。 クリップボードのメッセージは、きちんと貼り付けができれば出なくなると思います。
その他の回答 (5)
- glimlach
- ベストアンサー率36% (14/38)
フィルタを解除する方法ですが、 Selection.AutoFilter の一文を入れてやればフィルタは解除できます。 「すべて表示」状態になるのではなく、フィルタ自体が解除されてしまうのですが。
お礼
たびたびすみません。ありがとうございました。 >「すべて表示」状態になるのではなく、フィルタ自体が解除されてしまうのですが。 いえいえこれで、十分です。 コピー前に解除し、コピー後もとにもどすという方法でいくことにします。
- nishi6
- ベストアンサー率67% (869/1280)
質問が断片的で、どのようなシートが対照でコードがどのようになっているか分かりませんが、 "srcBook1.xls"の"Sheet1"の列"I:J"を、 "desBook2.xls"の"Sheet1"の列"I:J"に貼り付けるコード例です。 Workbooks("srcBook1.xls").Worksheets("Sheet1").Columns("I:J").Copy _ Destination:=Workbooks("desBook2.xls").Worksheets("Sheet1").Columns("I") ツール→マクロ→新しいマクロの記録を使って確認してみてください。 >クリップボードに大きな情報が・・・ いろいろ方法はありますが、列の貼り付け処理が終わったら、微細な範囲(例えば、A1セル)を1つコピーします。 Range("A1").Copy これでメッセージは出なくなるはずです。
お礼
質問わかりずらくてもうしわけないです。。。 ファイルが違ってもマクロの記録って使えるんですね? 知りませんでした。 なるほど、こう書くと一行でかけるのですね? ためしてみます。 ありがとうございました。
- cibirousseau
- ベストアンサー率31% (9/29)
こんにちわ。 マクロを利用して解決したいとの事なので マクロの事がまったくわからない私はエラーの部分のみで。 まず、貼り付けが出来ないと言う事について、これはコピー元が作業グループなどになっていませんか? 一度、ESCキーでクリアに戻してから列範囲設定をやり直してみてください。 そして、コピー。 コピー先を選択して貼り付け。 どうでしょう。 駄目かな? クリップボードがなんたらというメッセージは、コピー元がまだアクティブになっていると出るメッセージです。 貼り付けが完了すれば出なくなりますし、閉じる前にコピー元をESCで外せば出なくなるメッセージです。
お礼
回答ありがとうございます。 選択行がオートフィルタでフィルタがかかっていました。。。 手作業でフィルタを解除したらとりあえず、うまくいきました。 クリップボードのメッセージは貼り付けをしても、やっぱりダメでした。。。でも、別の行を無理やり選択してアクティブじゃなくせば うまくいきました! ありがとうございました。
- cyobin_man
- ベストアンサー率24% (298/1216)
(3)Worksheets("シート名").Columns("I:J").SelectでIからJ列を選択 これがわからないくらいの私から #1さんの方法のほか 元のIJを選んで右クリック コピー 先のIを選んで右クリック コピーしたセルの挿入。 左に余分に出来た列は削除 これも1つの方法です。
お礼
einzさん、cyobin_manさんさっそくの回答ありがとうございます。 補足のほうをさせていただきました。 すみません、VBAを使う方法を知りたかったのです。 説明不足ですみません。反省しています。。。
- einz
- ベストアンサー率35% (162/461)
コピー元とコピー先のファイルを読み込んでおく。 コピー元でマウスドラッグなどで範囲指定をして 「編集」>コピー 「ウィンドウ」からコピー先のファイルを選択して アクティブにする。 コピーしたいセルの先頭を選択してペースト これでよいのでは?
補足
すみません、補足します。 やりたいことは、二つのフォルダ(A,B)があり、フォルダ内に全く同じ名前(中のシート名も同じ)のエクセルファイルが複数あります。 AフォルダにあるデータをBフォルダにあるファイルにコピーしたい。 ということなんです。最初、全部のソースをのせて質問しようとしましたが のりきらなくて、省略して質問しました。 省略しすぎでしたね・・・ 上記のことをしたいのですが、定期的に行いたいのと、ファイルが多いのでVBA?マクロ?でやれるようにしたいのです。 うまく説明できてないですが、よい方法があればご指導ください。
お礼
回答ありがとうございます。 確認したら、オートフィルタがかかっていたためのようです。 これってVBAではずせるんですかね?