首页 文章

VBA循环遍历文件夹以从特定工作表中获取来自多个工作簿的数据,但工作表名称在不同的工作簿中有所不同

提问于
浏览
1

我循环遍历文件夹中的所有excel文件,以从每个工作簿中的特定工作表中获取数据,并将数据合并到主工作簿中 .

问题是,在14个工作簿中的9个工作表中,工作表名称为“Mthly KPI usd”,而其余工作簿则不同,我不允许更改工作表的名称 .

我该如何解决这个问题?谢谢 .

这是我的代码:

Sub LoopThroughFolder()

    Dim myCol As Long
    Dim my_FileName As Variant
    Dim i As Long
    Dim lnRow As Long, lnCol As Long

    Dim MyFile As String, Str As String, MyDir As String, Wb As Workbook
    Dim Rws As Long, Rng As Range
    Set Wb = ThisWorkbook
    'change the address to suite
    MyDir = "E:\John\2017\"
    MyFile = Dir(MyDir & "*.xl*")    'change file extension
    ChDir MyDir
    Dim current As String
    current = CurDir

    Application.ScreenUpdating = 0
    Application.DisplayAlerts = 0

    Do While MyFile <> ""
        If MyFile = "Master.xlsm" Then
        Exit Sub
        End If
        Workbooks.Open (MyDir + MyFile)
        With Worksheets("Mthly KPI usd")
            Rws = Cells(Rows.Count, "P").End(xlUp).Row
            lnRow = 2
            lnCol = ActiveSheet.Cells(lnRow, 1).EntireRow.Find(What:="Oct", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
            MsgBox lnCol
            Set Rng = Range(.Cells(4, lnCol), .Cells(Rws, lnCol))
            Rng.Copy Wb.Sheets("Test").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
            ActiveWorkbook.Close True
        End With
        MyFile = Dir()
    Loop

End Sub

1 回答

  • 0

    替换来自的行

    Workbooks.Open (MyDir + MyFile)
    

    End With
    

    以下内容

    Dim wb as Workbook
    Dim ws as Worksheet
    Set wb = Workbooks.Open (MyDir + MyFile)
    For Each ws in wb.Worksheets
        if InStr(1, ws.Name, "Mthly KPI") > 0 then
            With ws
            ' Add your code which copies data from the source worksheet to the master worksheet
            Rws = Cells(Rows.Count, "P").End(xlUp).Row
            End ws
        End If
    Next ws
    

相关问题