Private Sub Workbook_Open()
If MsgBox ( " 是否拆分为分行Sheet? " , vbYesNo, " 拆分 " ) = vbYes Then
FindSubBank
End If
End Sub
Sub CreateSheet(sheetName As String , afterSheet As String )
Dim newSheet As Worksheet
Set newSheet = ThisWorkbook.Sheets.Add(after: = Sheets(afterSheet))
With newSheet
.Name = sheetName
End With
End Sub
Sub FindSubBank()
Dim sum As Long
sum = 0
Dim rowsInBank As Long
rowsInBank = 0
Dim bankName As String
Dim nextBankName As String
Do
bankName = ThisWorkbook.Sheets( " 统计数据 " ).Range( " A3 " ).Offset(sum, 0 ).Value
nextBankName = ThisWorkbook.Sheets( " 统计数据 " ).Range( " A3 " ).Offset(sum + 1 , 0 ).Value
If (sum = 0 ) Then
CreateSheet bankName, " 统计数据 "
ThisWorkbook.Sheets( " 统计数据 " ).Activate
End If
If (bankName <> nextBankName) And sum <> 0 Then
Range( " A3 " ).Offset(sum, 0 ).EntireRow.Copy ThisWorkbook.Sheets(bankName).Range( " A3 " ).Offset(rowsInBank, 0 )
rowsInBank = 0
CreateSheet nextBankName, bankName
ThisWorkbook.Sheets( " 统计数据 " ).Activate
Range( " A1 " ).EntireRow.Copy ThisWorkbook.Sheets(nextBankName).Range( " A1 " )
Range( " A2 " ).EntireRow.Copy ThisWorkbook.Sheets(nextBankName).Range( " A2 " )
Else
Range( " A1 " ).EntireRow.Copy ThisWorkbook.Sheets(bankName).Range( " A1 " )
Range( " A2 " ).EntireRow.Copy ThisWorkbook.Sheets(bankName).Range( " A2 " )
Range( " A3 " ).Offset(sum, 0 ).EntireRow.Copy ThisWorkbook.Sheets(bankName).Range( " A3 " ).Offset(rowsInBank, 0 )
rowsInBank = rowsInBank + 1
End If
sum = sum + 1
Loop Until ThisWorkbook.Sheets( " 统计数据 " ).Range( " A3 " ).Offset(sum + 1 , 0 ).Value = ""
End Sub
以前的VBA代码存到移动硬盘中居然都被删掉,郁闷。放到这里应该安全吧。代码很垃圾,但是可能会有用到。这里就当垃圾箱吧。
Sub
OpenFiles(strPath
As
String
, strName
As
String
)
'
搜索分行文件夹依次打开所有同类的调研表
Application.DisplayAlerts = False ' 关闭
Dim i
If Application.Version = " 11.0 " Then
' 2003版本下打开多个文件代码
With Application.FileSearch
.LookIn = strPath ' 在统计表格所在目录开始搜索
.SearchSubFolders = True ' 搜索子文件夹
.fileName = " * " & strName & " * " & " .xls " ' 搜索文件名包含所选表格名的.xls文件
If .Execute > 0 Then
For i = 1 To .FoundFiles.count
Dim strTemp As String
strTemp = .FoundFiles(i)
Workbooks.Open (.FoundFiles(i))
' 重命名该分行文件夹下的调研表名,加上“_分行名”为后缀,然后另存到同目录下
Dim strSub As String
Dim subBank As String
strSub = Application.ActiveWorkbook.path
subBank = Mid (strSub, InStrRev (strSub, " \ " , Len (strSub)) + 1 )
Dim saveasName As String
Dim curName As String
curName = Application.ActiveWorkbook.name ' 当前文件名
saveasName = Mid (curName, 1 , InStrRev (curName, " . " , Len (curName)) - 1 ) & " _ " & subBank & " .xls " ' 另存为文件名
Application.ActiveWorkbook.SaveAs (Application.ActiveWorkbook.path & " \ " & saveasName) ' 另存为
' Application.ActiveWorkBook.ChangeFileAccess xlReadWrite '改变文件的访问方式为“读写”
Worksheets( 2 ).Activate
Next
Else
MsgBox " 找不到该文件!请确保统计表格所在路径的正确性! "
End If
End With
ElseIf Application.Version = " 12.0 " Then
' 2007版本下打开多个文件代码
Dim strSubBank( 38 ) As String
strSubBank( 0 ) = " 北京分行 "
strSubBank( 1 ) = " 天津分行 "
strSubBank( 2 ) = " 河北分行 "
strSubBank( 3 ) = " 山西分行 "
strSubBank( 4 ) = " 内蒙分行 "
strSubBank( 5 ) = " 辽宁分行 "
strSubBank( 6 ) = " 大连分行 "
strSubBank( 7 ) = " 吉林分行 "
strSubBank( 8 ) = " 黑龙江分行 "
strSubBank( 9 ) = " 上海分行 "
strSubBank( 10 ) = " 江苏分行 "
strSubBank( 11 ) = " 苏州分行 "
strSubBank( 12 ) = " 浙江分行 "
strSubBank( 13 ) = " 宁波分行 "
strSubBank( 14 ) = " 安徽分行 "
strSubBank( 15 ) = " 福建分行 "
strSubBank( 16 ) = " 厦门分行 "
strSubBank( 17 ) = " 江西分行 "
strSubBank( 18 ) = " 山东分行 "
strSubBank( 19 ) = " 青岛分行 "
strSubBank( 20 ) = " 河南分行 "
strSubBank( 21 ) = " 湖北分行 "
strSubBank( 22 ) = " 三峡分行 "
strSubBank( 23 ) = " 湖南分行 "
strSubBank( 24 ) = " 广东分行 "
strSubBank( 25 ) = " 深圳分行 "
strSubBank( 26 ) = " 广西分行 "
strSubBank( 27 ) = " 海南分行 "
strSubBank( 28 ) = " 重庆分行 "
strSubBank( 29 ) = " 四川分行 "
strSubBank( 30 ) = " 贵州分行 "
strSubBank( 31 ) = " 云南分行 "
strSubBank( 32 ) = " 西藏分行 "
strSubBank( 33 ) = " 陕西分行 "
strSubBank( 34 ) = " 甘肃分行 "
strSubBank( 35 ) = " 青海分行 "
strSubBank( 36 ) = " 宁夏分行 "
strSubBank( 37 ) = " 新疆分行 "
Dim xBank As Long
xBank = 0
For xBank = 0 To UBound (strSubBank) - 1
Dim path As String
Dim name As String
path = ThisWorkbook.path
name = Dir (path & " \ " & strSubBank(xBank) & " \* " & strName & " *.xls " , vbDirectory)
Do While name <> ""
Workbooks.Open path & " \ " & strSubBank(xBank) & " \ " & name
name = Dir
' 重命名该分行文件夹下的调研表名,加上“_分行名”为后缀,然后另存到同目录下
Dim strSub2 As String
Dim subBank2 As String
strSub2 = Application.ActiveWorkbook.path
subBank2 = Mid (strSub2, InStrRev (strSub2, " \ " , Len (strSub2)) + 1 )
Dim saveasName2 As String
Dim curName2 As String
curName2 = Application.ActiveWorkbook.name ' 当前文件名
saveasName2 = Mid (curName2, 1 , InStrRev (curName2, " . " , Len (curName2)) - 1 ) & " _ " & subBank2 & " .xls " ' 另存为文件名
Application.ActiveWorkbook.SaveAs (Application.ActiveWorkbook.path & " \ " & saveasName2) ' 另存为
' Application.ActiveWorkBook.ChangeFileAccess xlReadWrite '改变文件的访问方式为“读写”
Worksheets( 2 ).Activate
Loop
Next
End If
Application.DisplayAlerts = True ' 打开
End Sub
Application.DisplayAlerts = False ' 关闭
Dim i
If Application.Version = " 11.0 " Then
' 2003版本下打开多个文件代码
With Application.FileSearch
.LookIn = strPath ' 在统计表格所在目录开始搜索
.SearchSubFolders = True ' 搜索子文件夹
.fileName = " * " & strName & " * " & " .xls " ' 搜索文件名包含所选表格名的.xls文件
If .Execute > 0 Then
For i = 1 To .FoundFiles.count
Dim strTemp As String
strTemp = .FoundFiles(i)
Workbooks.Open (.FoundFiles(i))
' 重命名该分行文件夹下的调研表名,加上“_分行名”为后缀,然后另存到同目录下
Dim strSub As String
Dim subBank As String
strSub = Application.ActiveWorkbook.path
subBank = Mid (strSub, InStrRev (strSub, " \ " , Len (strSub)) + 1 )
Dim saveasName As String
Dim curName As String
curName = Application.ActiveWorkbook.name ' 当前文件名
saveasName = Mid (curName, 1 , InStrRev (curName, " . " , Len (curName)) - 1 ) & " _ " & subBank & " .xls " ' 另存为文件名
Application.ActiveWorkbook.SaveAs (Application.ActiveWorkbook.path & " \ " & saveasName) ' 另存为
' Application.ActiveWorkBook.ChangeFileAccess xlReadWrite '改变文件的访问方式为“读写”
Worksheets( 2 ).Activate
Next
Else
MsgBox " 找不到该文件!请确保统计表格所在路径的正确性! "
End If
End With
ElseIf Application.Version = " 12.0 " Then
' 2007版本下打开多个文件代码
Dim strSubBank( 38 ) As String
strSubBank( 0 ) = " 北京分行 "
strSubBank( 1 ) = " 天津分行 "
strSubBank( 2 ) = " 河北分行 "
strSubBank( 3 ) = " 山西分行 "
strSubBank( 4 ) = " 内蒙分行 "
strSubBank( 5 ) = " 辽宁分行 "
strSubBank( 6 ) = " 大连分行 "
strSubBank( 7 ) = " 吉林分行 "
strSubBank( 8 ) = " 黑龙江分行 "
strSubBank( 9 ) = " 上海分行 "
strSubBank( 10 ) = " 江苏分行 "
strSubBank( 11 ) = " 苏州分行 "
strSubBank( 12 ) = " 浙江分行 "
strSubBank( 13 ) = " 宁波分行 "
strSubBank( 14 ) = " 安徽分行 "
strSubBank( 15 ) = " 福建分行 "
strSubBank( 16 ) = " 厦门分行 "
strSubBank( 17 ) = " 江西分行 "
strSubBank( 18 ) = " 山东分行 "
strSubBank( 19 ) = " 青岛分行 "
strSubBank( 20 ) = " 河南分行 "
strSubBank( 21 ) = " 湖北分行 "
strSubBank( 22 ) = " 三峡分行 "
strSubBank( 23 ) = " 湖南分行 "
strSubBank( 24 ) = " 广东分行 "
strSubBank( 25 ) = " 深圳分行 "
strSubBank( 26 ) = " 广西分行 "
strSubBank( 27 ) = " 海南分行 "
strSubBank( 28 ) = " 重庆分行 "
strSubBank( 29 ) = " 四川分行 "
strSubBank( 30 ) = " 贵州分行 "
strSubBank( 31 ) = " 云南分行 "
strSubBank( 32 ) = " 西藏分行 "
strSubBank( 33 ) = " 陕西分行 "
strSubBank( 34 ) = " 甘肃分行 "
strSubBank( 35 ) = " 青海分行 "
strSubBank( 36 ) = " 宁夏分行 "
strSubBank( 37 ) = " 新疆分行 "
Dim xBank As Long
xBank = 0
For xBank = 0 To UBound (strSubBank) - 1
Dim path As String
Dim name As String
path = ThisWorkbook.path
name = Dir (path & " \ " & strSubBank(xBank) & " \* " & strName & " *.xls " , vbDirectory)
Do While name <> ""
Workbooks.Open path & " \ " & strSubBank(xBank) & " \ " & name
name = Dir
' 重命名该分行文件夹下的调研表名,加上“_分行名”为后缀,然后另存到同目录下
Dim strSub2 As String
Dim subBank2 As String
strSub2 = Application.ActiveWorkbook.path
subBank2 = Mid (strSub2, InStrRev (strSub2, " \ " , Len (strSub2)) + 1 )
Dim saveasName2 As String
Dim curName2 As String
curName2 = Application.ActiveWorkbook.name ' 当前文件名
saveasName2 = Mid (curName2, 1 , InStrRev (curName2, " . " , Len (curName2)) - 1 ) & " _ " & subBank2 & " .xls " ' 另存为文件名
Application.ActiveWorkbook.SaveAs (Application.ActiveWorkbook.path & " \ " & saveasName2) ' 另存为
' Application.ActiveWorkBook.ChangeFileAccess xlReadWrite '改变文件的访问方式为“读写”
Worksheets( 2 ).Activate
Loop
Next
End If
Application.DisplayAlerts = True ' 打开
End Sub