基于excel vba宏中的过滤器创建文件时是否要包含标题行
我已经使用下面的代码基于D列中的过滤器创建了新的excel文件 现在,它应该排除标题行(不为其创建文件),但我希望将其包含在它创建的每个文件中 任何问题或想法都会被告知 非常感谢基于excel vba宏中的过滤器创建文件时是否要包含标题行,excel,vba,Excel,Vba,我已经使用下面的代码基于D列中的过滤器创建了新的excel文件 现在,它应该排除标题行(不为其创建文件),但我希望将其包含在它创建的每个文件中 任何问题或想法都会被告知 非常感谢 Sub SplitWorkbook(Optional colLetter As String, Optional SavePath As String) If colLetter = "" Then colLetter = "D" Dim lastValue As String
Sub SplitWorkbook(Optional colLetter As String, Optional SavePath As String)
If colLetter = "" Then colLetter = "D"
Dim lastValue As String
Dim hasHeader As Boolean
Dim wb As Workbook
Dim c As Range
Dim currentRow As Long
hasHeader = True 'Indicate true or false depending on if sheet has header row.
If SavePath = "" Then SavePath = ThisWorkbook.Path
'Sort the workbook.
ThisWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range(colLetter & ":" & colLetter), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ThisWorkbook.Worksheets(1).Sort
.SetRange Cells
If hasHeader Then ' Was a header indicated?
.Header = xlYes
Else
.Header = xlNo
End If
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For Each c In ThisWorkbook.Sheets(1).Range("D:D")
If c.Value = "" Then Exit For
If c.Row = 1 And hasHeader Then
Else
If lastValue <> c.Value Then
If Not (wb Is Nothing) Then
wb.SaveAs SavePath & "\" & lastValue & ".xls"
wb.Close
End If
lastValue = c.Value
currentRow = 1
Set wb = Application.Workbooks.Add
End If
ThisWorkbook.Sheets(1).Rows(c.Row & ":" & c.Row).Copy
wb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Select
wb.Sheets(1).Paste
End If
Next
If Not (wb Is Nothing) Then
wb.SaveAs SavePath & "\" & lastValue & ".xls"
wb.Close
End If
End Sub
子拆分工作簿(可选colLetter作为字符串,可选SavePath作为字符串)
如果colLetter=”则colLetter=“D”
将最后一个值设置为字符串
作为布尔值的Dim散列头
将wb设置为工作簿
调光范围
与当前行一样长
hasHeader=True'根据工作表是否有标题行指示True或false。
如果SavePath=”“,则SavePath=thiswoolk.Path
'对工作簿进行排序。
ThisWorkbook.Worksheets(1).Sort.SortFields.Add Key:=范围(colLetter&“:”&colLetter)_
SortOn:=xlSortOnValues,顺序:=XLASSENDING,数据选项:=xlSortNormal
使用此工作簿。工作表(1)。排序
.设置范围单元格
如果是HashHeader,那么“是否指示了标题?”?
.Header=xlYes
其他的
.Header=xlNo
如果结束
.MatchCase=False
.方向=xlTopToBottom
.SortMethod=xl拼音
.申请
以
对于本工作簿中的每个c。表(1)。范围(“D:D”)
如果c.Value=“”,则退出
如果c.Row=1且hashheader,则
其他的
如果lastValue c.值,则
如果不是(wb什么都不是),那么
wb.SaveAs保存路径&“\”&lastValue&“.xls”
wb.关闭
如果结束
lastValue=c.值
currentRow=1
设置wb=Application.Workbooks.Add
如果结束
此工作簿.Sheets(1).行(c.Row&“:”&c.Row).复制
wb.Sheets(1).单元格(Rows.Count,1).结束(xlUp).选择
工作分解表(1).粘贴
如果结束
下一个
如果不是(wb什么都不是),那么
wb.SaveAs保存路径&“\”&lastValue&“.xls”
wb.关闭
如果结束
端接头
所以您要过滤数据,然后复制结果并将其粘贴为新文件?然后不能将可见行设置为新文件中的某个范围吗?