Я пытаюсь скопировать список листов, сохраняя каждый в качестве другого файла. Он продолжает давать мне error 1004
, говоря, что Copy method of Worksheet class failed
. Выбор линии Sheets(i).Copy
. Мне нужно сделать копию листа, а не копировать и вставлять значение в другое место, поскольку мне нужно форматирование, которое нужно переносить.Создание копии рабочего листа в цикле
Может кто-нибудь помочь исправить ошибку, поскольку я не могу найти то, что я сделал неправильно?
Sub CSR()
Dim wb As Workbook, First As Integer, Last As Integer, i As Integer, j As Integer
Dim rng As Range
Dim wk As Worksheet
Dim filepath As String
Dim filename As String
Set wb = ThisWorkbook
filepath = "H:\Finance\Danny Bland\"
wb.Activate
First = Sheets("LIVE FLEET").Index
Last = Sheets("Email Attachment").Index
For i = First + 1 To Last - 1
wb.Activate
Set wk = wb.Sheets(i)
wk.Activate
filename = Sheets(i).Name
Sheets(i).Activate
Sheets(i).Copy
Cells.Copy
Range("A1").PasteSpecial xlPasteValues
ActiveWorkbook.SaveAs filename:=filepath & filename & ".xlsx"
ActiveWorkbook.Close
Next i
End Sub
что значение 'i', когда код перерывов? – 2014-09-22 13:21:57
Это на самом деле ничего не делает, поэтому я предполагаю, что это '2', поскольку это первое используемое значение. – DannyBland
. Хорошо, вот сделка: когда вы пытаетесь ссылаться на« Лист »с индексом' i', вам нужно убедиться, что Лист с таким индексом действительно существует. Есть несколько способов справиться с этим, но если вы можете дать нам скриншот о структуре ваших листов, которая поможет нам придумать решение. – 2014-09-22 13:25:38