如何debugging这个Excel的麻烦?

Sub Macro3() ' ' Macro3 Macro ' ' Dim MyFile As String MyFile = Application.GetOpenFilename(MultiSelect:=True) Workbooks.Open (MyFile) Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Application.DisplayAlerts = False Selection.Copy ActiveWorkbook.Close Application.DisplayAlerts = True Windows("Jane macro test.xlsx").Activate Sheets("Sheet2").Select Range("B2").Select lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row Range("B" & lMaxRows + 1).Select ActiveSheet.Paste End Sub 

它一直说我的代码有运行时错误13和不匹配。 任何人都知道如何解决? 我能够使用它,如果我改变我的MultiSelect为False,但我需要它运行在多个文件夹。 我该如何去做呢?

试试像这样:

 Option Explicit Sub Macro3() Dim MyFile As Variant Dim counter As Long Dim wb As Workbook MyFile = Application.GetOpenFilename(MultiSelect:=True) For counter = LBound(MyFile) To UBound(MyFile) Set wb = Workbooks.Open(MyFile(counter)) MsgBox wb.Name ' Range("A2").Select ' Range(Selection, Selection.End(xlDown)).Select ' Application.DisplayAlerts = False ' Selection.Copy ' ActiveWorkbook.Close ' Application.DisplayAlerts = True ' ' Windows("Jane macro test.xlsx").Activate ' Sheets("Sheet2").Select ' Range("B2").Select ' lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row ' Range("B" & lMaxRows + 1).Select ' ActiveSheet.Paste Next counter End Sub 

它遍历每个工作簿,然后在MsgBox中显示其名称。 因此,你可以在循环中通过访问wb对象来做一些事情。 通常,确保在顶部声明Option Explicit ,以便编译器检查每个variables是否存在,并避免运行时发生错误。