这是我复制别人打代码,但是执行后提示无效外部过程,请问下是哪个地方写错了吗? VBA
Sub MergeExcelFiles()
Dim MyFolder As String
Dim MyFile As String
Dim TargetWorkbook As Workbook
Dim SourceWorkbook As Workbook
Dim SourceWorksheet As Worksheet
Dim TargetWorksheet As Worksheet
Dim LastRow As Long
Dim Header As Range
Dim FirstRun As Boolean
' 设置包含要合并的Excel文件的文件夹路径
MyFolder = "C:\Users\OP.130160\Desktop\新建文件夹" ' 修改为你的文件夹路径
MyFile = Dir(MyFolder & "*.xlsx*") ' 搜索.xls和.xlsx文件
FirstRun = True
' 创建新的目标工作簿或选择当前工作簿作为目标
' 如果你想要创建新的工作簿,请取消注释下一行并注释掉下面的 Set TargetWorkbook = ThisWorkbook
' Set TargetWorkbook = Workbooks.Add
Set TargetWorkbook = ThisWorkbook
' 在目标工作簿中创建一个新的工作表来存放合并后的数据
Set TargetWorksheet = TargetWorkbook.Sheets.Add
TargetWorksheet.Name = "MergedData"
' 循环遍历文件夹中的所有Excel文件
Application.ScreenUpdating = False ' 关闭屏幕更新以提高性能
Do While MyFile <> ""
' 打开当前文件
Set SourceWorkbook = Workbooks.Open(Filename:=MyFolder & MyFile)
' 设置源工作表为第一个工作表(或根据需要修改)
Set SourceWorksheet = SourceWorkbook.Sheets(1)
' 复制表头(只在第一次运行时)
If FirstRun Then
Set Header = SourceWorksheet.Range("A1:" & SourceWorksheet.Cells(1, Columns.Count).End(xlToLeft).Address)
Header.Copy Destination:=TargetWorksheet.Range("A1")
FirstRun = False
End If
' 找到源工作表的最后一行
LastRow = SourceWorksheet.Cells(SourceWorksheet.Rows.Count, "A").End(xlUp).Row
' 复制除了表头之外的所有数据到目标工作表
SourceWorksheet.Range("A2:" & SourceWorksheet.Cells(LastRow, Columns.Count).End(xlToLeft).Address).Copy _
Destination:=TargetWorksheet.Cells(TargetWorksheet.Rows.Count, "A").End(xlUp).Offset(1, 0)
' 关闭源工作簿,不保存更改
SourceWorkbook.Close SaveChanges:=False
' 获取下一个文件
MyFile = Dir()
Loop
Application.ScreenUpdating = True ' 重新打开屏幕更新
' 可选:自动调整列宽以适应内容
TargetWorksheet.Columns.AutoFit
MsgBox "合并完成!", vbInformation, "合并状态"
End Sub