实用vba案例

拆分sheet

每个sheet存到一个新文件中

Sub chaifen()
   Dim sht As Worksheet
       Dim MyBook As Workbook
       Set MyBook = ActiveWorkbook
       For Each sht In MyBook.Sheets
           sht.Copy
           ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & MyBook.Name & "_" & sht.Name & ".xls"
           ActiveWorkbook.Close
       Next
       MsgBox "文件已经被分拆完毕!"
End Sub

拆分行

文件行数太多,按照每20行进行切割,切割后存到新的excel表中。

Sub splitRow()
Application.ScreenUpdating = False
p = ActiveWorkbook.Path & "\"
With ActiveSheet
    For r = 1 To .Range("a1048576").End(xlUp).Row Step 20
        Set wb = Workbooks.Add
        .Rows(r).Resize(30).Copy wb.Sheets(1).Cells(1)
        wb.SaveAs p & r & ".xls", xlNormal
        wb.Close
    Next
End With
Application.ScreenUpdating = True
End Sub

根据单元格创建sheet

循环目标区域,如果对应名字的sheet已经有了,就不创建,否则创建对应的sheet

Sub process()
Dim sht As Worksheet
Dim i, k As Integer
For Each rag In Range("d2:d1000")
    k = 0
    For Each sht In Sheets
        If rag.Value = sht.Name Then
            k = 1
            Exit For
        End If
    Next
    If k = 0 Then
        Sheets.Add after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = rag
    End If
Next
End Sub

目标区域复制到其他sheet

Sub copytosheet()
For i = 2 To Sheets.Count
    Sheets(1).Range("a1").Copy Sheets(i).Range("a1")
Next
End Sub

对整个文件夹内的所有文件处理

下面的案例,扫描目标文件夹内所有的xlsx文件,然后执行processEach过程。
processEach过程会打开这个文件,对文件执行mysplit,然后保存关闭。
mysplit过程会把文件拆开,放到文件所在位置的子文件夹内。

整个代码的作用:
把strPath下的所有xlsx文件切割,切割的规则是每30行切一次。切割出来的文件放在全部strPath/target下。

Sub ListFiles()
    Dim strPath As String, strTmp As String
    Dim originbook As Workbook
    strPath = "C:\test\"
    strTmp = Dir(strPath & "*.xlsx")
    i = 1
    Do While strTmp <> ""
        Call processEach(strPath, strTmp) 
        strTmp = Dir
        i = i + 1
    Loop
End Sub

Sub processEach(filepath As String, filename As String)
Workbooks.Open filepath & filename
With ActiveSheet
    Call mysplit(30)
End With
Workbooks(filename).Save
Workbooks(filename).Close
End Sub

Sub mysplit(m As Integer)
Application.ScreenUpdating = False
p = ActiveWorkbook.Path & "\target\"
On Error Resume Next
VBA.MkDir p
fn = ActiveWorkbook.Name
With ActiveSheet
    For r = 1 To .Range("a1048576").End(xlUp).Row Step m
        Set wb = Workbooks.Add
        .Rows(r).Resize(m).Copy wb.Sheets(1).Cells(1)
        wb.SaveAs p & fn & "_" & r & ".xlsx"
        wb.Close
    Next
End With
Application.ScreenUpdating = True
End Sub
  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 2016 VBA编程实例速成案例是一本针对学习和掌握VBA编程的实用参考书籍。本书通过大量的实例和案例,向读者展示了VBA编程的各种技巧和应用场景。 该书首先介绍了VBA编程的基础知识,包括VBA的概述、VBA编辑器的使用以及VBA环境和对象模型的介绍。通过这些基础知识的学习,读者能够对VBA编程有一个整体的了解。 接下来,书中给出了许多实例,这些实例涵盖了各种不同的应用场景,包括数据处理、报表生成、图表绘制以及用户界面设计等。每个实例都给出了具体的需求描述,并给出了相应的代码实现,读者可以根据自己的需要进行修改和定制。 在每个实例中,作者都详细地解释了代码的编写思路和实现方法,读者可以通过分析和理解这些实例来提高自己的编程能力。此外,书中还提供了一些常用的VBA函数和技巧,读者可以加深对这些技术的理解和应用。 通过学习这本书,读者不仅可以掌握VBA编程的基础知识,还可以学会如何应用VBA编程解决实际问题。这些实例不仅丰富了读者的实际经验,还提供了一个学习的平台,让读者能够更好地理解和掌握VBA编程的相关知识。 总的来说,2016 VBA编程实例速成案例是一本非常实用的书籍,适合希望快速学习和掌握VBA编程的读者阅读。无论是初学者还是有一定编程经验的读者,都可以从中获得很大的帮助和收获。 ### 回答2: 2016年的VBA编程实例速成案例是一个针对初学者的编程案例集合,旨在通过实际案例的学习,帮助读者快速入门VBA编程。 这个速成案例集合包含了各种实际应用场景下的编程案例,例如自动化数据处理、数据分析、图表生成等。每个案例都提供了详细的编程代码和解释,读者可以按照案例的步骤一步一步地学习和理解。 通过这些实例的学习,读者可以了解到VBA编程的基本语法和常用操作,学会使用VBA编写简单的程序,进而解决自己在工作中遇到的问题。 2016年的案例集合还提供了一些进阶的编程技巧和实用的工具,例如如何优化程序的运行效率、如何调试程序等。这些技巧和工具对于读者提升自己的编程水平和解决更复杂的问题非常有帮助。 总的来说,2016年的VBA编程实例速成案例是一个适合初学者的实践教材,通过学习案例并实际操作,帮助读者快速入门VBA编程并解决实际问题。希望读者能够通过这个案例集合的学习,掌握VBA编程的基本技能,并能够在工作中灵活应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值