子 Akshay99()
Dim my_rng As Range
Set my_rng = Nothing
Dim i As Integer
Dim j As Integer
If Len(Dir(ActiveWorkbook.Path & "\" & Replace(ActiveWorkbook.Name, ".", "-"), vbDirectory)) = 0 Then
MkDir (ActiveWorkbook.Path & "\" & Replace(ActiveWorkbook.Name, ".", "-"))
End If
Dim curPath As String
curPath = ActiveWorkbook.Path & "\" & Replace(ActiveWorkbook.Name, ".", "-") & "\"
' MsgBox ActiveWorkbook.Name
'----此程序由 Akshay Patil 撰稿,如果发现可编辑,将对人员采取严格措施
j = 0
将 MasterList 调暗为范围
'----需要的变量----------------------------- -------------------------
将 Exl_data、Exl_Master、Exl_setting、filterExlName 作为字符串调暗
Dim E_filterfor, E_filterwith, E_filterExlName As String
Exl_setting = "Settings"
Exl_data = Sheets(Exl_setting).Range("E8").Value
Exl_Master = Sheets(Exl_setting).Range("E9").Value
E_filterfor = Sheets(Exl_setting).Range("E10").Value
E_filterwith = Sheets(Exl_setting).Range("E11").Value
E_filterExlName = Sheets(Exl_setting).Range("E12").Value
If Sheets(Exl_data).AutoFilterMode = True Then
Sheets(Exl_data).AutoFilterMode = False
End If
If Sheets(Exl_setting).AutoFilterMode = True Then
Sheets(Exl_setting).AutoFilterMode = False
End If
'--------------Logic for getting first element to last from Data sheet for defining whole list-----------------
Dim FirstCell As Range, LastCell As Range
Set LastCell = Sheets(Exl_data).Cells(Sheets(Exl_data).Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
Sheets(Exl_data).Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
Set FirstCell = Sheets(Exl_data).Cells(Sheets(Exl_data).Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
SearchDirection:=xlNext, LookIn:=xlValues).Row, _
Sheets(Exl_data).Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues).Column)
Set my_rng = Range(FirstCell, LastCell)
'-----------------------------------------
On Error Resume Next
Sheets(Exl_data).Columns.AutoFit
'=============================================== ======================================
Sheets(Exl_data).Range(E_filterwith & ":" & E_filterwith).NumberFormat = "@"
Sheets(Exl_Master).Range(E_filterfor & ":" & E_filterfor).NumberFormat = "@"
'================================================== =====================================
'=======首先我们将最后一个单元格名称作为主列表================================= ==================================================== =================
设置 MasterList = Sheets(Exl_Master).Range(E_filterwith + "2:" + E_filterwith & Sheets(Exl_Master).Cells(Sheets(Exl_Master).Rows.Count, E_filterwith).End(xlUp).Row)
'=============================================== ==================================================== ==========
'=======For循环===================================== ==================================================== =
我 = 2
对于 MasterList.Value 中的每个单元格
' --用于按主列表过滤数据----
my_rng.AutoFilter Field:=Sheets(Exl_data).Range(E_filterfor & ":" & E_filterfor).Column, Criteria1:="=" & cell
filterExlName = Sheets(Exl_Master).Range(E_filterExlName & i).Value
my_rng.复制
工作簿。添加
ActiveSheet.Paste
ActiveSheet.Cells.EntireColumn.AutoFit
ActiveWorkbook.SaveAs 文件名:=curPath & filterExlName & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
活动窗口.关闭
我 = 我 + 1
下一个单元格
MsgBox "成功生成 Excel 工作表数量" & i - 2
'================================================== ================================================
' ---------------------------------- --------------------------
If Sheets(Exl_data).AutoFilterMode = True Then
Sheets(Exl_data).AutoFilterMode = False
万一
结束子