• ベストアンサー

エクセルのコピー

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

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

  • ベストアンサー
  • glimlach
  • ベストアンサー率36% (14/38)
回答No.3

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

filebox
質問者

お礼

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

その他の回答 (5)

  • glimlach
  • ベストアンサー率36% (14/38)
回答No.6

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

filebox
質問者

お礼

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

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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 これでメッセージは出なくなるはずです。

filebox
質問者

お礼

質問わかりずらくてもうしわけないです。。。 ファイルが違ってもマクロの記録って使えるんですね? 知りませんでした。 なるほど、こう書くと一行でかけるのですね? ためしてみます。 ありがとうございました。

回答No.4

こんにちわ。 マクロを利用して解決したいとの事なので マクロの事がまったくわからない私はエラーの部分のみで。 まず、貼り付けが出来ないと言う事について、これはコピー元が作業グループなどになっていませんか? 一度、ESCキーでクリアに戻してから列範囲設定をやり直してみてください。 そして、コピー。 コピー先を選択して貼り付け。 どうでしょう。 駄目かな? クリップボードがなんたらというメッセージは、コピー元がまだアクティブになっていると出るメッセージです。 貼り付けが完了すれば出なくなりますし、閉じる前にコピー元をESCで外せば出なくなるメッセージです。

filebox
質問者

お礼

回答ありがとうございます。 選択行がオートフィルタでフィルタがかかっていました。。。 手作業でフィルタを解除したらとりあえず、うまくいきました。 クリップボードのメッセージは貼り付けをしても、やっぱりダメでした。。。でも、別の行を無理やり選択してアクティブじゃなくせば うまくいきました! ありがとうございました。

  • cyobin_man
  • ベストアンサー率24% (298/1216)
回答No.2

(3)Worksheets("シート名").Columns("I:J").SelectでIからJ列を選択 これがわからないくらいの私から #1さんの方法のほか 元のIJを選んで右クリック コピー 先のIを選んで右クリック コピーしたセルの挿入。 左に余分に出来た列は削除  これも1つの方法です。

filebox
質問者

お礼

einzさん、cyobin_manさんさっそくの回答ありがとうございます。 補足のほうをさせていただきました。 すみません、VBAを使う方法を知りたかったのです。 説明不足ですみません。反省しています。。。

  • einz
  • ベストアンサー率35% (162/461)
回答No.1

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

filebox
質問者

補足

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

関連するQ&A