Excel 循环不识别Do

Excel 循环不识别Do,excel,vba,loops,Excel,Vba,Loops,我一直在编辑/编写这段代码,以便将多个工作簿合并为一个工作簿。 然而,我得到了一个“没有Do的循环”编译错误。可能的重复并没有说明出了什么问题,只是给出了一个新的代码,所以这不是对我问题的回答,而是一个解决方案 Sub MergeAllWorkbooks() Dim SummarySheet As Worksheet Dim FolderPath As String Dim NRow As Long Dim OCol As Long Dim FileNam

我一直在编辑/编写这段代码,以便将多个工作簿合并为一个工作簿。 然而,我得到了一个“没有Do的循环”编译错误。可能的重复并没有说明出了什么问题,只是给出了一个新的代码,所以这不是对我问题的回答,而是一个解决方案

Sub MergeAllWorkbooks()
    Dim SummarySheet As Worksheet
    Dim FolderPath As String
    Dim NRow As Long
    Dim OCol As Long
    Dim FileName As String
    Dim WorkBk As Workbook
    Dim SourceRangeCult As Range
    Dim DestRangeCult As Range
    Dim SourceRangeYield As Range
    Dim DestRangeYield As Range
    Dim SourceRangeLoc As Range
    Dim DestRangeLoc As Range
    Dim SourceRangeDRipe As Range
    Dim DestRangeDRipe As Range
    Dim LastRow As Integer
    Dim LastColumn As Integer
    Dim col As Integer

    Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)

    FolderPath = "M:\My Documents\MSC Thesis\United Kingdom\Winter Barley\Merge excel\"

    NRow = 1
    OCol = 2
    OColD = OCol + 48


    FileName = Dir(FolderPath & "*.xl*")


        Do While FileName <> ""

            Set WorkBk = Workbooks.Open(FolderPath & FileName)


            SummarySheet.Range("A" & NRow).Value = FileName


            LastRow = ActiveSheet.UsedRange.Rows.Count
            LastColumn = ActiveSheet.UsedRange.Columns.Count

                For col = 2 To 49

                Set SourceRangeLoc = WorkBk.Worksheets(1).Range("A1:A" & LastRow)
                Set DestRangeLoc = SummarySheet.Range("C" & NRow)
                Set DestRangeLoc = DestRange.Resize(SourceRangeLoc.Rows.Count, 1)

                Set SourceRangeCult = WorkBk.Worksheets(1).Range(OCol & "1:" & OCol & "1")
                Set DestRangeCult = SummarySheet.Range("B" & NRow)
                Set DestRangeCult = DestRange.Resize(SourceRangeLoc.Rows.Count, 1)

                Set SourceRangeYield = WorkBk.Worksheets(1).Range(OCol & "2:" & OCol & LastRow)
                Set DestRangeYield = SummarySheet.Range("D" & NRow)
                Set DestRangeYield = DestRange.Resize(SourceRangeLoc.Rows.Count, 1)

                Set SourceRangeDRipe = WorkBk.Worksheets(1).Range(OColD & "2:" & OColD & LastRow)
                Set DestRangeDRipe = SummarySheet.Range("E" & NRow)
                Set DestRangeDRipe = DestRange.Resize(SourceRangeLoc.Rows.Count, 1)


                DestRangeCult.Value = SourceRangeCult.Value

                Exit For

                NRow = NRow + DestRange.Rows.Count
                OCol = OCol + 1

            WorkBk.Close savechanges:=False

            FileName = Dir()

        Loop

    SummarySheet.Columns.AutoFit

End Sub
子合并所有工作簿()
将汇总表作为工作表进行调整
将FolderPath设置为字符串
暗淡无光
长的
将文件名设置为字符串
将WorkBk设置为工作簿
Dim SourceRange作为范围
Dim Destrange作为范围
Dim SourceRange作为范围输出
Dim Destrange作为范围
Dim SourceRangeLoc作为范围
Dim DESTANGELOC As范围
Dim SourceRangeDRipe作为范围
Dim DESTRANGDRIPE As范围
将最后一行设置为整数
将最后一列设置为整数
作为整数的Dim col
设置汇总表=工作簿。添加(XLWBATWORKEM)。工作表(1)
FolderPath=“M:\My Documents\MSC论文\英国\冬大麦\合并excel\”
NRow=1
OCol=2
OColD=OCol+48
FileName=Dir(FolderPath&“*.xl*”)
文件名“”时执行此操作
设置WorkBk=Workbooks.Open(文件夹路径和文件名)
SummarySheet.Range(“A”&NRow).Value=FileName
LastRow=ActiveSheet.UsedRange.Rows.Count
LastColumn=ActiveSheet.UsedRange.Columns.Count
对于col=2到49
设置SourceRangeLoc=WorkBk.Worksheets(1).Range(“A1:A”和LastRow)
设置destrangeroc=SummarySheet.Range(“C”和NRow)
设置DestRangeLoc=DestRange.Resize(SourceRangeLoc.Rows.Count,1)
设置SourceRangeCult=WorkBk.Worksheets(1).Range(OCol&“1:”&OCol&“1”)
设置DestRangeCult=SummarySheet.Range(“B”和NRow)
设置DestRangeCult=DestRange.Resize(SourceRangeLoc.Rows.Count,1)
设置SourceRangeYield=WorkBk.Worksheets(1).Range(OCol&“2:”&OCol&LastRow)
Set DestRangeYield=SummarySheet.Range(“D”和NRow)
Set DestRangeYield=DestRange.Resize(SourceRangeLoc.Rows.Count,1)
设置SourceRangeDRipe=WorkBk.Worksheets(1).Range(OColD和“2:”&OColD和LastRow)
设置DestRangeDRipe=SummarySheet.Range(“E”和NRow)
设置DestRangeDRipe=DestRange.Resize(SourceRangeLoc.Rows.Count,1)
DestRangeCult.Value=SourceRangeCult.Value
退出
NRow=NRow+DestRange.Rows.Count
OCol=OCol+1
WorkBk.Close savechanges:=False
FileName=Dir()
环
SummarySheet.Columns.AutoFit
端接头

您的
For
循环的内部
没有结束表达式
Exit For
用于中断循环-要说明常规结束,只需使用
Next

您还没有关闭
For
循环…啊,我明白了,我需要下一列。
Exit For
是指在循环结束之前,您想要
退出
For
循环。
For
循环应始终使用
Next
语句关闭。非常感谢,可能是重复的。它现在运行。调试剩余xD的时间到了