こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのコピー

エクセルで別のエクセルファイルに列コピーをしようとしています。
やり方として、
(コピー元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)で"そのコマンドは複数の選択範囲に対して実行できません。”と
いうエラーになります。何がおかしいのかわからないのですが、
正しいやり方を教えていただけませんでしょうか?
それともうひとつ、ファイルを閉じるときに"クリップボードに大きな情報があります。"というメッセージがでてしまいます。
これをでなくする方法を教えてください。
お願いします。

投稿日時 - 2002-06-14 13:35:26

QNo.291977

すぐに回答ほしいです

質問者が選んだベストアンサー

まだ確認中ですが、「複数の選択範囲に対して~」というエラーは普通のコピー&ペーストでも出ることがありますよね。
コピーする場所は、I列とJ列を別々ではなく、I列からJ列まで、と連続したセルですか?
連続していない部分を選択して貼り付けるときに出るエラーのような気がするのですが。

クリップボードのメッセージは、きちんと貼り付けができれば出なくなると思います。

投稿日時 - 2002-06-14 14:12:49

お礼

回答ありがとうございます。

確認したら、オートフィルタがかかっていたためのようです。
これってVBAではずせるんですかね?

投稿日時 - 2002-06-14 14:40:17

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

フィルタを解除する方法ですが、
Selection.AutoFilter
の一文を入れてやればフィルタは解除できます。
「すべて表示」状態になるのではなく、フィルタ自体が解除されてしまうのですが。

投稿日時 - 2002-06-14 15:02:21

お礼

たびたびすみません。ありがとうございました。
>「すべて表示」状態になるのではなく、フィルタ自体が解除されてしまうのですが。
いえいえこれで、十分です。
コピー前に解除し、コピー後もとにもどすという方法でいくことにします。

投稿日時 - 2002-06-14 17:41:27

ANo.5

質問が断片的で、どのようなシートが対照でコードがどのようになっているか分かりませんが、

"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
これでメッセージは出なくなるはずです。

投稿日時 - 2002-06-14 14:50:16

お礼

質問わかりずらくてもうしわけないです。。。

ファイルが違ってもマクロの記録って使えるんですね?
知りませんでした。
なるほど、こう書くと一行でかけるのですね?

ためしてみます。

ありがとうございました。

投稿日時 - 2002-06-14 17:39:13

ANo.4

こんにちわ。
マクロを利用して解決したいとの事なので
マクロの事がまったくわからない私はエラーの部分のみで。

まず、貼り付けが出来ないと言う事について、これはコピー元が作業グループなどになっていませんか?
一度、ESCキーでクリアに戻してから列範囲設定をやり直してみてください。
そして、コピー。
コピー先を選択して貼り付け。
どうでしょう。
駄目かな?

クリップボードがなんたらというメッセージは、コピー元がまだアクティブになっていると出るメッセージです。
貼り付けが完了すれば出なくなりますし、閉じる前にコピー元をESCで外せば出なくなるメッセージです。

投稿日時 - 2002-06-14 14:29:06

お礼

回答ありがとうございます。

選択行がオートフィルタでフィルタがかかっていました。。。
手作業でフィルタを解除したらとりあえず、うまくいきました。

クリップボードのメッセージは貼り付けをしても、やっぱりダメでした。。。でも、別の行を無理やり選択してアクティブじゃなくせば
うまくいきました!

ありがとうございました。

投稿日時 - 2002-06-14 14:50:30

ANo.2

(3)Worksheets("シート名").Columns("I:J").SelectでIからJ列を選択
これがわからないくらいの私から

#1さんの方法のほか

元のIJを選んで右クリック コピー
先のIを選んで右クリック コピーしたセルの挿入。

左に余分に出来た列は削除

 これも1つの方法です。

投稿日時 - 2002-06-14 13:59:08

お礼

einzさん、cyobin_manさんさっそくの回答ありがとうございます。

補足のほうをさせていただきました。
すみません、VBAを使う方法を知りたかったのです。
説明不足ですみません。反省しています。。。

投稿日時 - 2002-06-14 14:11:51

ANo.1

コピー元とコピー先のファイルを読み込んでおく。
コピー元でマウスドラッグなどで範囲指定をして
「編集」>コピー
「ウィンドウ」からコピー先のファイルを選択して
アクティブにする。
コピーしたいセルの先頭を選択してペースト

これでよいのでは?

投稿日時 - 2002-06-14 13:46:44

補足

すみません、補足します。
やりたいことは、二つのフォルダ(A,B)があり、フォルダ内に全く同じ名前(中のシート名も同じ)のエクセルファイルが複数あります。
AフォルダにあるデータをBフォルダにあるファイルにコピーしたい。
ということなんです。最初、全部のソースをのせて質問しようとしましたが
のりきらなくて、省略して質問しました。
省略しすぎでしたね・・・
上記のことをしたいのですが、定期的に行いたいのと、ファイルが多いのでVBA?マクロ?でやれるようにしたいのです。
うまく説明できてないですが、よい方法があればご指導ください。

投稿日時 - 2002-06-14 13:50:14

あなたにオススメの質問