Excel VBA 读取其他的Excel文件内的内容

'初级版每次只能对单一文件进行操作; 

'进阶版可对多个文件进行操作(文件夹内及其子文件夹内的文件都可操作),方便快捷;

'进阶版中  Private Function fcnGetFileList(sFolderPath As String) As Variant

'End Function

'方法的实现可复制 本人创作的《VBA 实现把格式相同的多个word网格数据批量转到excel文件中》中 fcnGetFileList 方法到进阶版中,替换即可使用

不会使用VBA操作的,可查看本人创作的 《如何打开 Excel VBA 及 我的第一个代码》,打开代码编辑器,  复制代码到编辑器内就可以正常使用了

'注:初级版   和  进阶版 代码只需要复制其中一个就可以了

'创建一个Excel 文件名为:( 汇总表.xlsm ) 的文件,代码粘贴在编辑器内

'---------------------------------------------------初级版-----------------------------------------------

'-----------清除内容和格式---------
Sub Clearbody()
 a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
 Range("a3:k" & a +1 ).ClearContents
 Range("a3:k" & a +1).ClearFormats
End Sub

Sub ExecuteExcel()

    Clearbody

    
    '取消屏幕刷新
    Application.ScreenUpdating = False
    '禁止显示提示和警告消息;当出现需要用户应答的消息时,Excel将选择默认应答
    Application.DisplayAlerts = False
        

    Dim wb As Workbook    

    Range("A1").Select

     '自定义文件名和所在目录
    Set wb = Workbooks.Open("D:\test.xlsl")
    a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----     

   '自定义复制的区间    目前是 A1 到 K列 
   Range("A1:K" & a).Select
        
   Selection.Copy
   Windows("汇总表.xlsm").Activate
       
   a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
        
  Range("A" & a + 1).Select
  ActiveSheet.Paste
  wb.Close
  Set wb = Nothing
    
    
    '----------------------删除空白行----------------------
    a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
    For i = a To 3 Step -1
        If (Cells(i, 1) = "") Then
            Rows(i).Delete
        End If
    Next
    '----------------------删除空白行----------------------
    

    '设置行高
    Rows("3:" & a).RowHeight = 52
    Range("A3").Select
    
    '开启屏幕刷新
    Application.ScreenUpdating = True
    '开启显示提示和警告消息
    Application.DisplayAlerts = False
    
End Sub

'---------------------------------------------------进阶版-----------------------------------------------

'-----------清除内容和格式-------------------------
Sub Clearbody()
 a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
 Range("a3:k" & a +1 ).ClearContents
 Range("a3:k" & a +1).ClearFormats
End Sub

Sub ExecuteExcel()

    Clearbody

    Dim strFolder As String
    Dim varFileList As Variant
    Dim FSO As Object, myFile As Object
    
    '显示打开文件夹对话框
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        If .SelectedItems.Count = 0 Then Exit Sub '未选择文件夹
        strFolder = .SelectedItems(1)
    End With
    
    '获取文件夹中的所有文件列表
    varFileList = fcnGetFileList(strFolder)
    If Not IsArray(varFileList) Then
        MsgBox "未找到文件", vbInformation
        Exit Sub
    End If
    
    '取消屏幕刷新
    Application.ScreenUpdating = False
    '禁止显示提示和警告消息;当出现需要用户应答的消息时,Excel将选择默认应答
    Application.DisplayAlerts = False
        

    Dim wb As Workbook
    
    For x = 0 To UBound(varFileList)

        Range("F6").Select
        Set wb = Workbooks.Open(varFileList(x))

        
        a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
        

        '自定义复制的区间    目前是 A1 到 K列 
        Range("A3:K" & a).Select
        
        Selection.Copy
        Windows("汇总表.xlsm").Activate
        
        a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
        
        Range("A" & a + 1).Select
        ActiveSheet.Paste
        wb.Close
        
    Next x
    
    Set wb = Nothing
    
    
    '----------------------删除空白行----------------------
    a = Cells.SpecialCells(xlCellTypeLastCell).Row    '-----最后一行----
    For i = a To 3 Step -1
        If (Cells(i, 1) = "") Then
            Rows(i).Delete
        End If
    Next
    '----------------------删除空白行----------------------
    

    '设置行高
    Rows("3:" & a).RowHeight = 52
    Range("A3").Select
    
    '开启屏幕刷新
    Application.ScreenUpdating = True
    '开启显示提示和警告消息
    Application.DisplayAlerts = False
    
End Sub

Private Function fcnGetFileList(sFolderPath As String) As Variant
' 将文件列表放到数组

End Function

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个摩羯座的工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值