【问题标题】:Looping through workbooks in a folder循环浏览文件夹中的工作簿
【发布时间】:2020-07-08 06:34:57
【问题描述】:

我正在尝试从文件夹中的所有工作簿中复制某些单元格。下面的代码只循环通过第一个文件。 VBA新手。欢迎任何帮助

提前致谢

Sub Get_Data()

Dim Directory As String
Dim Filename As String
Dim Sheet As Worksheet
Dim i As Integer
Dim j As Integer
Dim wsDest As Workbook

Application.ScreenUpdating = False

Set wsDest = ThisWorkbook
Directory = "C:\Users\dchandarman\Desktop\Current Season\Weekly Production SA\"
Filename = Dir(Directory & "*.xls")

Do While Filename <> ""
MsgBox Filename
Workbooks.Open (Directory & Filename)
Application.ActiveWorkbook.Worksheets("Exec").Range("C21:Y21").Copy
wsDest.Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial                         
Paste:=xlPasteValuesAndNumberFormats
Application.ActiveWorkbook.Worksheets("Exec").Range("C23:Y23").Copy
wsDest.Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial         
Paste:=xlPasteValuesAndNumberFormats
Application.Workbooks(Filename).Worksheets("Exec").Range("C31:Y32").Copy
wsDest.Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial 
Paste:=xlPasteValuesAndNumberFormats

i = 0

Do Until i = 4
Application.Workbooks(Filename).Worksheets("Exec").Range("D7").Copy
wsDest.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial             
Paste:=xlPasteValuesAndNumberFormats
i = i + 1
Loop
Application.Workbooks(Filename).Close Savechanges:=False
Loop
End Sub

【问题讨论】:

  • 在最后一个 Loop 之前添加 Filename = Dir

标签: excel vba loops copy


【解决方案1】:

您可以复制/粘贴不连续的范围。

Sub Get_Data2()

    Const Directory = "C:\Users\dchandarman\Desktop\Current Season\Weekly Production SA\"

    Dim Filename As String
    Dim wsDest As Worksheet, rngDest As Range
    Dim wbSrc As Workbook, wsSrc As Worksheet

    Set wsDest = ThisWorkbook.Sheets("Sheet1")

    Filename = Dir(Directory & "*.xls")

    Do While Filename <> ""
        MsgBox Filename
        Set wbSrc = Workbooks.Open(Directory & Filename)
        Set wsSrc = wbSrc.Worksheets("Exec")
        wsSrc.Range("C21:Y21,C23:Y23,C31:Y32").Copy

        Set rngDest = wsDest.Cells(Rows.Count, "B").End(xlUp).Offset(1)
        rngDest.PasteSpecial Paste:=xlPasteValuesAndNumberFormats

        wsSrc.Range("D7").Copy
        rngDest.Offset(0, -1).Resize(4, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        wbSrc.Close

        Filename = Dir
    Loop

    MsgBox "Done"

End Sub


【讨论】:

    猜你喜欢
    • 2018-05-27
    • 2018-06-04
    • 1970-01-01
    • 2014-12-23
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多