[英]Looping through columns and creating worksheets, error 1004
我有一個原始文件“ Categories_by_Year.xlsm”,其中有2010年至2014年之間每年的工作表,其中包含不同的類別和數據(每列一個類別)。 我想要的是每年創建一個新的工作簿,而不是將每個類別另存為文件中的新工作表。 每一列的第一行是類別名稱,該類別名稱用於新工作表的名稱。 從第2行到最后一個非空行-復制數據,然后將其轉置到新工作表中。
當我運行以下代碼時,文件和第一張紙被創建(第一列被復制並轉置到新文件中)。 但是,在那之后,我得到了運行時錯誤“ 1004”。 我嘗試從不同的列開始,但在創建第一個列之后仍然引發錯誤。
Sub NewShForEachCategory()
Dim LastRow As Double
For year = 2010 To 2014
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="C:\" & CStr(year) & ".xls", FileFormat:=xlExcel8
Workbooks("Categories_by_Year.xlsm").Activate
For col = 1 To 35
If Not IsEmpty(Workbooks("Categories_by_Year.xlsm").Worksheets(CStr(year)).Cells(1, col)) Then
Category = Workbooks("Categories_by_Year.xlsm").Worksheets(CStr(year)).Cells(1, col).Value
LastRow = Workbooks("Categories_by_Year.xlsm").Worksheets(CStr(year)).Cells(Rows.Count, col).End(xlUp).Row
Workbooks("Categories_by_Year.xlsm").Worksheets(CStr(year)).Range(Cells(2, col), Cells(LastRow, col)).Copy
Workbooks(CStr(year) & ".xls").Activate
Workbooks(CStr(year) & ".xls").Worksheets.Add.Name = Category
Workbooks(CStr(year) & ".xls").Worksheets(Category).Cells(1, 1).PasteSpecial Transpose:=True
End If
Next col
Next year
End Sub
未經測試:
Sub NewShForEachCategory()
Dim wbCBY as Workbook, wbY as Workbook, Category
Dim sht as Worksheet, year as Long, col as Long
Set wbCBY = Workbooks("Categories_by_Year.xlsm")
For year = 2010 To 2014
Set wbY = Workbooks.Add()
wbY.SaveAs Filename:="C:\" & CStr(year) & ".xls", _
FileFormat:=xlExcel8
Set sht = wbCBY.Worksheets(CStr(year))
For col = 1 To 35
Category = Trim(sht.Cells(1, col).Value)
If Len(Category) > 0 Then
sht.Range(sht.Cells(2, col), _
sht.Cells(sht.Rows.Count, col).End(xlUp)).Copy
With wbY.Worksheets.Add()
.Name = Category
.Cells(1, 1).PasteSpecial Transpose:=True
End With
End If
Next col
Next year
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.