vba遍历循环文件夹内文件,从sheetA中提取D3放入本文件中A列,如果没有sheetA,则从sheetB中提取D3放入本文件中A列,如果没有sheetB,则从sheetC中提取D3放入本文件中A列,直至所有文件遍历完成
时间: 2024-11-22 11:48:52 浏览: 21
在VBA中,你可以使用`For Each`循环配合`Sheets`对象来遍历文件夹内的Excel文件,并根据需要从不同的工作表获取数据。这里是一个基本的示例脚本,假设你的文件夹路径是`PathToFolder`:
```vba
Sub IterateThroughFiles()
Dim MyFolder As String
Dim MyFile As Workbook
Dim wsTemp As Worksheet
' 设置文件夹路径
MyFolder = "PathToFolder"
' 遍历文件夹内的每个Excel文件
For Each MyFile In Application.Workbooks.OpenFiles(MyFolder & "\*.xlsx") ' 或者 ".xls" 如果是旧版本Excel
' 检查是否存在SheetA、SheetB和SheetC
On Error Resume Next
Set wsTemp = MyFile.Sheets("SheetA")
If Err.Number <> 0 Then
Err.Clear
Set wsTemp = MyFile.Sheets("SheetB")
End If
If Err.Number <> 0 Then
Err.Clear
Set wsTemp = MyFile.Sheets("SheetC")
End If
On Error GoTo 0
' 如果找到了对应的工作表,提取D3单元格数据并写入当前文件的A列
If Not wsTemp Is Nothing Then
MyFile.Sheets(1).Range("A1").Value = wsTemp.Range("D3").Value
Else
MsgBox "文件 " & MyFile.Name & " 中找不到匹配的工作表", vbInformation
End If
' 关闭打开的文件,释放内存
MyFile.Close SaveChanges:=False
Next MyFile
' 清理错误处理
End Sub
```
阅读全文