重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記のマクロを使おうと思うと、
このマクロがついたファイルを開いて
他のエクセルファイルを開くのですが使えません。
使おうとするとマクロのついたファイルに戻ってしまいます。

Sub test01()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "統合シート" Then
Else
ws.Activate
d = ws.Range("A65535").End(xlUp).Row
ws.Range(Cells(1, "A"), Cells(d, "C")).Copy
Sheets("統合シート").Activate
Sheets("統合シート").Range("A65535").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
End If
Next
End Sub

どこを変えればよいのでしょうか。
教えてください。
よろしくお願いします。

A 回答 (3件)

こんにちは。


ご質問の意味が正確にはわかりません。

他のブックも、同じように、マクロのあるブックの「統合シートに取り寄せる」ということでしょうか?もし、そうでしたら、以下のようになるかと思います。

なお、マクロブックを立ち上げれば、コードをコピーしなくても、コードが正しければ、他のブックからでも、問題なく動きます。なるべく、見易さのために、標準モジュールに書いたほうがよいです。

ともかく、Activate などを取り去ってみることです。必ずしも、Select やActivate を入れなくても、値を取り出すことが出来ます。少し、手を入れてみました。

Sub test02()
 Dim ws As Worksheet
 Dim d As Long
 For Each ws In ActiveWorkbook.Worksheets
  If ws.Name <> "統合シート" Then
   d = ws.Range("A65535").End(xlUp).Row
   With ws
   .Range(.Cells(1, "A"), .Cells(d, "C")).Copy ThisWorkbook.Sheets("統合シート").Range("A65535").End(xlUp).Offset(1, 0)
   End With
  End If
 Next
End Sub
    • good
    • 0

一番簡単な方法は、「test01()」を使いたいエクセルにコピーする方法です。



どうしてもと言うのなら、
>For Each ws In Worksheets
この部分を
For Each ws In 使いたいブック.Worksheets
とでもしてみてはいかがでしょう?
ちなみに確認していませんので、あしからず...
    • good
    • 0

他のファイルにコピペじゃだめですか?

    • good
    • 0

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