zoukankan      html  css  js  c++  java
  • 把一个excel拆分成多个工作表

    1.打开visual basic

    2.插入模块

    3.粘贴宏代码

    Sub CFGZB()
    
        Dim myRange As Variant
    
        Dim myArray
    
        Dim titleRange As Range
    
        Dim title As String
    
        Dim columnNum As Integer
    
        myRange = Application.InputBox(prompt:="请选择标题行:", Type:=8)
    
        myArray = WorksheetFunction.Transpose(myRange)
    
        Set titleRange = Application.InputBox(prompt:="请选择拆分的表头,必须是第一行,且为一个单元格,如:“姓名”", Type:=8)
    
        title = titleRange.Value
    
        columnNum = titleRange.Column
    
        Application.ScreenUpdating = False
    
        Application.DisplayAlerts = False
    
        Dim i&, Myr&, Arr, num&
    
        Dim d, k
    
        For i = Sheets.Count To 1 Step -1
    
            If Sheets(i).Name <> "数据源" Then
    
                Sheets(i).Delete
    
            End If
    
        Next i
    
        Set d = CreateObject("Scripting.Dictionary")
    
        Myr = Worksheets("数据源").UsedRange.Rows.Count
    
        Arr = Worksheets("数据源").Range(Cells(2, columnNum), Cells(Myr, columnNum))
    
        For i = 1 To UBound(Arr)
    
            d(Arr(i, 1)) = ""
    
        Next
    
        k = d.keys
    
        For i = 0 To UBound(k)
    
            Set conn = CreateObject("adodb.connection")
    
            conn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
    
            Sql = "select * from [数据源$] where " & title & " = '" & k(i) & "'"
    
            Worksheets.Add after:=Sheets(Sheets.Count)
    
            With ActiveSheet
    
                .Name = k(i)
    
                For num = 1 To UBound(myArray)
    
                    .Cells(1, num) = myArray(num, 1)
    
                Next num
    
                .Range("A2").CopyFromRecordset conn.Execute(Sql)
    
            End With
    
            Sheets(1).Select
    
            Sheets(1).Cells.Select
    
            Selection.Copy
    
            Worksheets(Sheets.Count).Activate
    
            ActiveSheet.Cells.Select
    
            Application.CutCopyMode = False
    
        Next i
    
        conn.Close
    
        Set conn = Nothing
    
        Application.DisplayAlerts = True
    
        Application.ScreenUpdating = True
    
    End Sub
    View Code

    4.把要分割的工作薄重命名为“数据源”

    因为代码中写死判定值为“数据源”:

    5.插入按钮

    6.给按钮指定宏,宏名称为前面定义的名称,即:CFGZB

    7.点击按钮选择行、列

  • 相关阅读:
    大概了解了flexbox
    JS基础知识
    bugzilla_firefox
    Redis的五种数据类型
    Redis交互编程语言及客户端
    为什么要用Thrift
    知识产权代理行业公司竞争分析
    @Resource和@Autowired的区别
    Maven 3.3全局配置
    Aspose for Maven 使用
  • 原文地址:https://www.cnblogs.com/kk-home/p/9618829.html
Copyright © 2011-2022 走看看