2015-09-01 5 views
1

У меня есть макрос, который генерирует несколько электронных таблиц. Я хочу скопировать эти электронные таблицы в новую книгу, переименовать листы во время работы и сохранить книгу с новым именем.Как скопировать несколько электронных таблиц в новую книгу?

Я пытался использовать следующий код, но он генерирует ошибку во время выполнения 9, индекса вне диапазона

Dim z As Variant 
Dim wb As Workbook 

    Worksheets("T_Summary").Activate 

    Set wb = Workbooks.Add 

    z = Format(DateTime.Now, "dd-MM-YYYY hhmm") 
    wb.SaveAs "C\...\desktop\Transactions Summary " & z & ".xlsx" 

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet 1").Range("A1:BO" & h).Value _ 
     = Workbooks("Auto Recon 2.xlsx").Worksheets("TSummary").Range("A1:BO" & h).Value 

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet1").Name = "TSummary" 

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet 2").Range("A1:BO" & h).Value _ 
     = Workbooks("Auto Recon 2.xlsx").Worksheets("Reject").Range("A1:BO" & h).Value 
    Workbooks("Transactions Summary").Worksheets("Sheet1").Name = "Reject" 

    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet 3").Range("A1:BO" & h).Value _ 
     = Workbooks("Auto Recon 2.xlsx").Worksheets("U codes").Range("A1:BO" & h).Value 
    Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet1").Name = "U codes" 

    x = 2 
    k = Sheets.Count 

    While x <= k 
     Sheets(x).Delete 
     k = Sheets.Count 
    Wend 

    Workbooks("Transactions Summary " & z & ".xlsx").Close savechanges:=True 

Worksheets("Launch Screen").Activate 
+0

Вы точно получаете эту ошибку в своем коде? – DragonSamu

+0

@DragonSamu Ошибка возникает в первых книгах (... – Clauric

+0

Есть ли какая-то конкретная причина для вашего единственного копирования «Range A1: BO»? Если вы просто хотите скопировать «Worksheet», я бы предложил использовать «WorkSheet (" Имя здесь »). Копировать' – DragonSamu

ответ

2

После тестирования коды само это проблема:

Когда ты do Set wb = Workbooks.Add Excel делает новый Workbook с Worksheet по имени Sheet1 вместо Sheet 1.

Таким образом, следующий код будет решить эту проблему:

Workbooks("Transactions Summary " & z & ".xlsx").Worksheets("Sheet1").Range("A1:BO" & h).Value 

Вам также необходимо сделать следующее:

Application.SheetsInNewWorkbook = 3 
Set wb = Workbooks.Add 

Workbooks.Add создает Workbook с 1 Sheet (в моем Excel), чтобы сделать убедитесь, что вы получили нужное количество листов, которые вам нужно установить, чтобы установить 3 на необходимую сумму. (Я предположил, что 3 основан на вашем коде)

Смежные вопросы