|
我有一段代码,实现的是:打开任意一个xls文档,然后模块中插入这段代码,运行,就可以浏览文件夹打开想要被按内容拆分的excel文档,然后选择保留几行表头,按哪一列拆分。这个代码多次测试都无误。但是我插入一个按钮,将代码复制进去之后,操作同样的文件却出错,这是什么原因?那个按钮自带Private Sub OptionButton1_Click() 我把自己的sub 和 end都删除了的- Sub 拆分表()
- Application.ScreenUpdating = False
- Dim clm_d As Integer
- Dim mycell As Range
- Dim nodupes As New Collection
- Dim rngop As Range
- Set ac = ActiveSheet
- Dim myr As Range
- Dim lastrow As Integer
- Dim myr1 As Range
- Dim baoliu As Integer
- Dim acn As String
- Dim st As String
- Dim st1 As String
- st = Application.GetOpenFilename
- Workbooks.Open (st)
- st1 = ActiveWorkbook.Path
- baoliu = Application.InputBox(prompt:="在有几个sheet情况下,将页面转到要拆分的sheet再操作,要保留几行表头?(注意隐藏行)", Title:="选择所要保留的表头", Type:=1)
- clm_d = Application.InputBox(prompt:="要按哪一列拆分?(注意隐藏列)", Title:="选择拆分列", Type:=1)
- acn = ActiveSheet.Name
- Set myr = activesheet.Range(Cells(1, 1), Cells(baoliu, Application.WorksheetFunction.Max(Range("A1").End(xlToRight).Column, Range("A2").End(xlToRight).Column)))
- myr.Copy Destination:=rangePasteSpecial
- Sheets.Add after:=ActiveSheet
- ActiveSheet.Name = "辅助"
- ActiveSheet.Paste
- Set myr1 = ActiveSheet.Range(Cells(1, 1), Cells(baoliu, Application.WorksheetFunction.Max(Range("A1").End(xlToRight).Column, Range("A2").End(xlToRight).Column)))
- Worksheets(acn).Activate
- For Each mycell In activesheet.Range(Cells(baoliu + 1, clm_d), (activesheet.Cells(baoliu + 1, clm_d).End(xlDown)))
- On Error Resume Next
- nodupes.Add mycell.Value, CStr(mycell.Value)
- On Error Resume Next
- Next mycell
- On Error GoTo 0
- Set rngop = Worksheets(acn).UsedRange
- For Each Item In nodupes
- rngop.AutoFilter Field:=clm_d, Criteria1:=Item
- rngop.Copy
- Sheets.Add after:=ActiveSheet
- ActiveSheet.Name = Item
- ActiveSheet.Paste Destination:=Worksheets(Item).Range(Cells(baoliu + 1, 1), Cells(baoliu + 1, 1).End(xlDown))
- Rows(baoliu + 1).Delete
- Worksheets("辅助").Activate
-
- myr1.Copy Destination:=rangePasteSpecial
-
- Worksheets(Item).Activate
-
- Range(Cells(1, 1), Cells(baoliu, Application.WorksheetFunction.Max(Range("A1").End(xlToRight).Column, Range("A2").End(xlToRight).Column))).Select
- ActiveSheet.Paste
-
- Next Item
-
- rngop.AutoFilter
- Worksheets(acn).Activate
- Application.ScreenUpdating = True
-
- Dim sht As Worksheet
-
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- Worksheets("辅助").Delete
- Worksheets(acn).Delete
- For Each sht In Sheets
- If IsEmpty(sht.UsedRange) Then
- sht.Delete
- Else
- sht.Copy
- ActiveWorkbook.SaveAs Filename:=st1 & "" & sht.Name & ".xls"
- ActiveWorkbook.Close
- End If
- Next
-
- Application.DisplayAlerts = True
- Application.ScreenUpdating = True
- End Sub
复制代码
|
|