web-dev-qa-db-ja.com

VBAを使用してシートを別のブックにコピーする方法は?

だから、私がやりたいことは、一般的に、ワークブックのコピーを作成することです。ただし、ソースブックはマクロを実行しているため、マクロを使用せずに同一のコピーを作成する必要があります。 VBAでこれを行う簡単な方法があるはずですが、まだ見つけていません。シートを1つずつ新しいワークブックにコピーして、これを作成することを検討しています。どうすればいいですか?もっと良い方法はありますか?

21
Brian

Ozgrid の誰かが同様の質問に答えました。基本的に、Workbook1からWorkbook2に各シートを1つずつコピーします。

Sub CopyWorkbook()

    Dim currentSheet as Worksheet
    Dim sheetIndex as Integer
    sheetIndex = 1

    For Each currentSheet in Worksheets

        Windows("SOURCE WORKBOOK").Activate 
        currentSheet.Select
        currentSheet.Copy Before:=Workbooks("TARGET WORKBOOK").Sheets(sheetIndex) 

        sheetIndex = sheetIndex + 1

    Next currentSheet

End Sub

免責事項:私はこのコードを試していませんが、代わりにあなたの問題にリンクされた例を採用しました。他に何もなければ、それはあなたが意図した解決策に導くはずです。

29
Chris Flynn

Keytarheroの応答を少し書き直したいと思います。

Sub CopyWorkbook()

Dim sh as Worksheet,  wb as workbook

Set wb = workbooks("Target workbook")
For Each sh in workbooks("source workbook").Worksheets
   sh.Copy After:=wb.Sheets(wb.sheets.count) 
Next sh

End Sub

編集:シート名の配列を作成して、一度にコピーすることもできます。

Workbooks("source workbook").Worksheets(Array("sheet1","sheet2")).Copy _
         After:=wb.Sheets(wb.sheets.count)

:XLSからシートをコピーしますか? XLSに対してエラーが発生します。反対にうまく機能します(XLSからXLSX)

48
Patrick Honorez

Xlsxとして保存できます。次に、マクロを失い、少し少ない作業で新しいブックを生成します。

ThisWorkbook.saveas Filename:=NewFileNameWithPath, Format:=xlOpenXMLWorkbook
12
Brad

Vbaアプリを実行しているワークブック内のすべてのシートを、アプリマクロなしの新しいワークブックにコピーできました。

ActiveWorkbook.Sheets.Copy
5

すべてのマクロがモジュール内にあると仮定すると、おそらく このリンク が役立ちます。ブックをコピーしたら、各モジュールを繰り返して削除します

2
raven

簡単に書くことができます

Worksheets.Copy

サイクルを実行する代わりに。デフォルトでは、ワークシートコレクションは新しいブックに複製されます。

2010バージョンのXLで機能することが実証されています。

2
Hors2force

代わりにこれを試してください。

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    ws.Copy
Next
2
Ch3knraz3
    Workbooks.Open Filename:="Path(Ex: C:\Reports\ClientWiseReport.xls)"ReadOnly:=True


    For Each Sheet In ActiveWorkbook.Sheets

        Sheet.Copy After:=ThisWorkbook.Sheets(1)

    Next Sheet
0
Sainath J