0
2つのExcelワークブックがあり、1つのシートと別のシートのセットを新しいワークブックとして保存する必要があります。今週は毎週やっているので、マクロ/ vbaとして保存したいと思います。複数のワークブックの複数のシートを1つのワークブックに統合する
私はこのコードをオンラインで見つけて編集しましたが、動作しません。
Sub CopySheets()
Dim wkb As Workbook
Dim sWksName As String
sWksName = "Store 1"
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
wkb.Worksheets(sWksName).Copy _
Before:=ThisWorkbook.Sheets(1)
End If
Next
Set wkb = Nothing
sWksName = "Store 3"
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
wkb.Worksheets(sWksName).Copy _
Before:=ThisWorkbook.Sheets(1)
End If
Next
Set wkb = Nothing
sWksName = "Store 30"
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
wkb.Worksheets(sWksName).Copy _
Before:=ThisWorkbook.Sheets(1)
End If
Next
Set wkb = Nothing
sWksName = "Store 33"
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
wkb.Worksheets(sWksName).Copy _
Before:=ThisWorkbook.Sheets(1)
End If
Next
Set wkb = Nothing
End Sub
私は両方のワークブックを開いておく必要がありますが、問題はありません。シート「店1」は細かいコピーされると、それが停止し、私はデバッグをクリックしたとき、それはこのライン
wkb.Worksheets(sWksName).Copy _
Before:=ThisWorkbook.Sheets(1)
エラーメッセージとエラーがあることを私に伝えます:「スクリプトを範囲外」
*すべての*開いているブック(宛先を除く)に「ストア1」という名前のワークシートがありますか?そうでなければ、次のワークブックでそのワークシートを見つけられず、失敗します。 – tigeravatar
いいえ、それは1つのブックのみで、他のブックではありません - わかります、それはすべてのブックで同じシートを探しています! 1つのワークブックから別のワークブックを取得し、別のワークブックから別のワークシートを取得するには、どうすれば変更できますか? – jeangelj
For wkbを実行してワークブックをループするのではなく、どのブックにどのシートがあるかを指定する必要があります。名前をあらかじめ知っていない場合は、For Eachループを継続して使用する必要がありますが、コピーするシートがワークブックに含まれていることを確認するためにチェックインしてください。シートが含まれている場合は、それをコピーします。それ以外の場合はスキップします – tigeravatar