it-swarm.com.de

Wie kopiert man Blätter mit vba in eine andere Arbeitsmappe?

Im Allgemeinen möchte ich also eine Kopie einer Arbeitsmappe erstellen. Die Quellarbeitsmappe führt jedoch meine Makros aus, und ich möchte, dass eine identische Kopie von sich selbst erstellt wird, jedoch ohne die Makros. Ich denke, es sollte einen einfachen Weg geben, dies mit VBA zu tun, habe es aber noch nicht gefunden. Ich erwäge, die Blätter einzeln in die neue Arbeitsmappe zu kopieren, die ich erstellen werde. Wie würde ich das machen? Gibt es einen besseren Weg?

20
Brian

Jemand bei Ozgrid antwortete auf eine ähnliche Frage. Grundsätzlich kopieren Sie einfach jedes Blatt einzeln von Workbook1 nach Workbook2.

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

Haftungsausschluss: Ich habe diesen Code nicht ausprobiert und stattdessen das verknüpfte Beispiel nur für Ihr Problem übernommen. Zumindest sollte es Sie zu Ihrer beabsichtigten Lösung führen.

29
Chris Flynn

Ich möchte die Antwort von keytarhero leicht umschreiben:

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

Bearbeiten: Sie können auch ein Array von Blattnamen erstellen und auf einmal kopieren.

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

Hinweis : Kopieren eines Blattes aus einem XLS? zu einem XLS führt zu einem Fehler. Das Gegenteil funktioniert gut (XLS zu XLSX)

47
Patrick Honorez

Sie könnten als xlsx speichern. Dann verlieren Sie die Makros und erstellen eine neue Arbeitsmappe mit etwas weniger Arbeit.

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

Ich konnte alle Arbeitsblätter in einer Arbeitsmappe, auf der eine vba-App ausgeführt wurde, in eine neue Arbeitsmappe ohne App-Makros kopieren.

ActiveWorkbook.Sheets.Copy
5

Angenommen, alle Ihre Makros befinden sich in Modulen. Vielleicht dieser Link wird helfen. Nach dem Kopieren der Arbeitsmappe wiederholen Sie einfach jedes Modul und löschen es

2
raven

Du kannst einfach schreiben

Worksheets.Copy

statt einen Zyklus auszuführen ..__ Standardmäßig wird die Arbeitsblattsammlung in einer neuen Arbeitsmappe wiedergegeben.

Es ist erwiesen, in der Version 2010 von XL zu funktionieren.

2
Hors2force

Versuchen Sie es stattdessen.

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