我试图使用宏将每个5000行的电子表格拆分为多个新文件并保留标题。我想这个代码,但得到错误信息“将每个带有标题的5000行拆分为多个新工作表
代码:
Sub Macro1()
Dim inputFile As String, inputWb As Workbook
Dim lastRow As Long, row As Long, n As Long
Dim newCSV As Workbook
inputFile = GetOpenFilename
Set inputWb = Workbooks.Open(inputFile)
With inputWb.Worksheets(1)
lastRow = .Cells(Rows.Count, "A").End(xlUp).row
Set newCSV = Workbooks.Add
n = 0
For row = 2 To lastRow Step 5000
n = n + 1
.Rows(1).EntireRow.Copy newCSV.Worksheets(1).Range("A1")
.Rows(row & ":" & row + 5000 - 1).EntireRow.Copy newCSV.Worksheets(1).Range("A2")
'Save in same folder as input workbook with .xlsx replaced by (n).csv
newCSV.SaveAs Filename:=Replace(inputWb.FullName, ".xlsx", "(" & n & ").csv"), FileFormat:=xlCSV, CreateBackup:=False
Next
End With
newCSV.Close saveChanges:=False
inputWb.Close saveChanges:=False
End Sub
错误根据从这里突出了‘调试’:
Set inputWb = Workbooks.Open(inputFile)
这似乎是问题出现在“GetOpenFilename”中。在分配后立即将'Debug.Print inputFile'放入(例如'inputFile = GetOpenFilename'),并在崩溃后检查立即窗口(Ctrl + G)以查看正在报告的内容。 – Jeeped 2015-04-01 23:10:42
你试过'inputFile = Application.GetOpenFilename'吗? – Jeeped 2015-04-01 23:17:52
立即窗口不显示任何东西,当我尝试这个“子Macro1的() 昏暗INPUTFILE作为字符串,inputWb作为工作簿 昏暗LASTROW长,排长,N当 昏暗newCSV作为工作簿 INPUTFILE = GetOpenFilename Debug.Print inputFile End Sub “ – 2015-04-01 23:22:41