Excel VBA在目录文件夹和行计数中执行While循环

Excel VBA在目录文件夹和行计数中执行While循环,excel,vba,Excel,Vba,我有两个关于编码的问题。请容忍我,因为我不是这方面的专家 range(“B6:Y”&lrow1).copy-似乎没有按照我希望的方式工作。它只从B1:Y6复制单元格,但目的是从B6:Y开始复制单元格,直到最后一行 Dir Do while仅在一个文件上循环,即使在指定的文件夹路径上有多个文件。因此,创建一个无限循环 知道我做错了什么吗 Private Sub conso() Dim folder As String, consofolder As String Dim files As Stri

我有两个关于编码的问题。请容忍我,因为我不是这方面的专家

  • range(“B6:Y”&lrow1).copy-似乎没有按照我希望的方式工作。它只从B1:Y6复制单元格,但目的是从B6:Y开始复制单元格,直到最后一行

  • Dir Do while仅在一个文件上循环,即使在指定的文件夹路径上有多个文件。因此,创建一个无限循环

  • 知道我做错了什么吗

    Private Sub conso()
    Dim folder As String, consofolder As String
    Dim files As String, consofile As String
    Dim dateyear As String, team As String
    Dim strfile As String, newdate As String
    Dim wb1 As Workbook, wb2 As Workbook
    Dim lrow1 As Long, lrow2 As Long
    Dim ws1 As Worksheet, ws2 As Worksheet
    
    dateyear = Range("A2").Value
    newdate = Format(dateyear, "mmmm yyyy")
    team = Range("B2").Value
    folder = Range("C2").Value
    consofolder = folder & newdate & "\" & team
    consofile = "conso "
    files = Dir(consofolder & "\*.xlsm")
    strfile = consofolder & "\" & consofile & team & " - " & newdate & ".xlsm"
    
    Application.DisplayAlerts = False
    Application.AskToUpdateLinks = False
    Application.AutomationSecurity = msoAutomationSecurityLow
    Workbooks.Open Filename:=folder & "\" & "conso conso" & ".xlsm"
    Set wb1 = Workbooks("conso conso.xlsm")
    wb1.Activate
    Set ws1 = wb1.Worksheets("Input")
    If Len(Dir(strfile)) = 0 Then
    
        GoTo conso
    Else
        MsgBox "Conso already in place"
        Exit Sub
    End If
    conso:
    Do While files <> ""
        Debug.Print files
    
        Workbooks.Open Filename:=consofolder & "\" & files
        Set wb2 = Workbooks(files)
        Set ws2 = wb2.Worksheets("Input")
        With wb2
            With Worksheets("Input")
                lrow1 = .Cells(.Rows.Count, 1).End(xlUp).Row
            End With
        End With
        ws2.Range("B6:Y" & lrow1).Copy
        wb1.Activate
        With wb1
            With Worksheets("Input")
                lrow2 = .Cells(.Rows.Count, 1).End(xlUp).Row
            End With
        End With
        ws1.Range("B" & lrow2).PasteSpecial
        wb2.Close
        files = Dir(consofolder & "\*.xlsm")
    
        Set wb2 = Nothing
    Loop
    End Sub
    
    Private Sub conso()
    将文件夹变暗为字符串,将文件夹变为字符串
    将文件设置为字符串,将文件设置为字符串
    Dim dateyear作为字符串,team作为字符串
    Dim strfile作为字符串,newdate作为字符串
    将wb1设置为工作簿,将wb2设置为工作簿
    变暗lrow1的长度与lrow2的长度相同
    将ws1标注为工作表,将ws2标注为工作表
    日期年=范围(“A2”)。值
    newdate=格式(dateyear,“mmmm-yyyy”)
    团队=范围(“B2”)。值
    文件夹=范围(“C2”)。值
    consofolder=folder&newdate&“\”团队
    consofile=“conso”
    files=Dir(文件夹&“\*.xlsm”)
    strfile=consofolder&“\”&consofile&team&“-”&newdate&“.xlsm”
    Application.DisplayAlerts=False
    Application.AskToUpdateLinks=False
    Application.AutomationSecurity=msoAutomationSecurityLow
    工作簿。打开文件名:=文件夹&“\”和“conso-conso”&.xlsm”
    Set wb1=工作簿(“conso-conso.xlsm”)
    wb1.激活
    设置ws1=wb1。工作表(“输入”)
    如果Len(Dir(strfile))=0,则
    后藤肉汤
    其他的
    MsgBox“Conso已到位”
    出口接头
    如果结束
    康索:
    在文件“”时执行此操作
    调试。打印文件
    工作簿。打开文件名:=文件夹和“\”文件
    设置wb2=工作簿(文件)
    设置ws2=wb2.工作表(“输入”)
    使用wb2
    带工作表(“输入”)
    lrow1=.Cells(.Rows.Count,1).End(xlUp).Row
    以
    以
    ws2.Range(“B6:Y”和lrow1)。复制
    wb1.激活
    使用wb1
    带工作表(“输入”)
    lrow2=.Cells(.Rows.Count,1).End(xlUp).Row
    以
    以
    ws1.Range(“B”和lrow2).PasteSpecial
    wb2.关闭
    files=Dir(文件夹&“\*.xlsm”)
    设置wb2=无
    环
    端接头
    
    Ws2.range(“B6:Y”和lrow1)。复制。。。仅从B1:Y6复制单元格,如果
    lrow1
    等于1,则会发生这种情况。检查您从中获取最后一行的列的内容有许多使用Dir在SO上迭代文件夹的示例。你也在做很多你不需要做的隐含的活动书籍/工作表/范围引用。这些可能会导致引用错误的对象