vba导入excel数据到另一个文件_用VBA批量汇聚宿主工作簿外部隶属文件夹下相同格式工作簿数据...

本文介绍了如何使用VBA批量从外部文件夹导入多个相同格式的Excel工作簿数据到一个主工作簿中。通过VBA实现文件的读写操作,包括设置交互界面、处理外部数据工作簿及编写后台功能代码。步骤包括创建交互界面、展示外部数据工作簿资源,以及编写导入和清理数据的VBA代码。
摘要由CSDN通过智能技术生成

Hello,大家好,对于Excel汇聚相同格式的数据可能大家都通过不同的方式做过,比如说:在中基于一个工作簿内部可以实现将相同格式的各个工作表数据汇聚到一个工作表上去,用得最多的是通过数据引用的方式或者高级一点即是通过VBA后台进行操作实现将各个工作表的数据拷贝到一个工作表里边。但是,我们想说的是,如果要从该工作簿隶属的文件夹下外部分散的各个工作簿文件(关键是这些文件中数据条数不尽相同)中如何实现批量汇聚外部相同格式的数据呢?可能很多朋友没有尝试过吧,这就涉及到跨文件的内部数据拷贝了哦!

对于跨文件的操作,可能大家涉及的不太多,有关注我头条作品的粉丝可能发现近几次我都或多或少基于VBA实现了文件的读写操作。搞清楚了VBA的文件读写操作过程原理,其实一切事都不是事了。对于文件的操作无非就是这么三个过程:文件打开-->文件数据读/写-->文件关闭。

下面,我就给大家分享一下我自己通过VBA后台实现的的批量导入外部相同格式数据的技术方法的过程吧,希望对大家有所帮助哦!实现步骤如下:

一、简单的宿主Excel工作簿指定工作表界面设计。

在工作表上插入两个命令按钮,起到很好的交互作用,并设置相应属性;再在宿主工作表做一个数据表头。如下图所示

aeb84dfea627ab5c9d6781080f1b4bfc.png

图1 宿主工作表界面

二、宿主工作簿外部隶属文件夹下相同格式工作簿资源文件及

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你想了解如何用VBA代码一键合并汇总多个Excel工作簿,省时省力。以下是具体步骤: 1. 打开一个新的Excel工作簿,按下“Alt+F11”打开VBA编辑器。 2. 在VBA编辑器中,单击菜单栏上的“插入”->“模块”,打开一个新的VBA模块。 3. 在新的VBA模块中,复制以下代码: ``` Sub 合并多个工作簿() Dim MyPath As String, FilesInPath As String Dim MyFiles() As String Dim SourceRcount As Long, FNum As Long Dim mybook As Workbook, BaseWks As Worksheet Dim sourceRange As Range, destrange As Range Dim rnum As Long, CalcMode As Long '关闭屏幕刷新,提高运行速度 With Application CalcMode = .Calculation .Calculation = xlCalculationManual .ScreenUpdating = False .EnableEvents = False End With '获取要合并的工作簿所在的文件夹 MyPath = InputBox("请输入要合并的工作簿所在的文件夹路径") If MyPath = "" Then Exit Sub If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" '获取要合并的工作簿文件名 FilesInPath = Dir(MyPath & "*.xlsx") If FilesInPath = "" Then MsgBox "找不到任何Excel文件", vbInformation, "没有文件" Exit Sub End If '将要合并的工作簿文件名放入一个数组中 FNum = 0 Do While FilesInPath <> "" FNum = FNum + 1 ReDim Preserve MyFiles(1 To FNum) MyFiles(FNum) = FilesInPath FilesInPath = Dir() Loop '打开第一个工作簿并将其内容复制到新的工作簿中 Set BaseWks = Workbooks.Open(MyPath & MyFiles(1)).Sheets(1) rnum = BaseWks.Cells.Find(What:="*", _ After:=BaseWks.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row For FNum = 2 To UBound(MyFiles) Set mybook = Nothing On Error Resume Next Set mybook = Workbooks.Open(MyPath & MyFiles(FNum)) On Error GoTo 0 If Not mybook Is Nothing Then sourceRange = mybook.Sheets(1).Range("A1").CurrentRegion SourceRcount = sourceRange.Rows.Count If SourceRcount >= 2 Then Set destrange = BaseWks.Range("A" & rnum + 1) sourceRange.Copy destrange rnum = rnum + SourceRcount End If mybook.Close SaveChanges:=False End If Next FNum BaseWks.Columns.AutoFit '恢复屏幕刷新和事件处理,并计算一次 With Application .Calculation = CalcMode .ScreenUpdating = True .EnableEvents = True End With MsgBox "合并完成" End Sub ``` 4. 将代码中的“输入要合并的工作簿所在的文件夹路径”改为实际的文件夹路径。 5. 按下“F5”或点击“运行”->“运行子过程”,运行代码。 6. 程序会自动合并指定文件夹中的所有Excel工作簿并将它们汇总到新的工作簿中的第一个工作表中。 注意:在运行过程中,程序会关闭屏幕刷新和事件处理功能,以提高运行速度。运行完成后,程序会自动恢复这些功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值