vba遍历循环文件夹内工作簿,每个工作簿是否存在工作表A、工作表B、工作表C、工作表D中的一个或两个,若果有则分别提取工作表中D3数据依次放入此工作表的A列,直至所有文件遍历完成
时间: 2024-11-23 12:31:54 浏览: 39
在VBA中,遍历文件夹内的工作簿并提取特定工作表的数据可以按照这样的步骤操作。首先,你需要导入`Microsoft Scripting Runtime`库来处理文件系统操作。下面是一个示例脚本,它将检查每个工作簿是否包含指定的工作表,并从其中提取D3单元格的数据:
```vba
Sub IterateThroughWorksheets()
Dim FSO As Object
Dim Folder As Object
Dim File As Object
Dim wb As Workbook
Dim ws As Worksheet
' 创建FileSystemObject实例
Set FSO = CreateObject("Scripting.FileSystemObject")
' 设置文件夹路径
Dim folderPath As String
folderPath = "PathToFolder"
' 打开文件夹
Set Folder = FSO.GetFolder(folderPath)
' 遍历文件夹中的所有工作簿
For Each File In Folder.Files
If LCase(FullName(File)) Like "*.xlsx" Or LCase(FullName(File)) Like "*.xls" Then
' 打开工作簿
Set wb = Workbooks.Open(FullName(File))
' 检查工作表是否存在
On Error Resume Next
Set wsA = wb.Sheets("SheetA")
Set wsB = wb.Sheets("SheetB")
Set wsC = wb.Sheets("SheetC")
Set wsD = wb.Sheets("SheetD")
On Error GoTo 0
' 提取数据并写入相应工作表的A列
If Not wsA Is Nothing Then
wsA.Cells(1, 1).Value = wsA.Cells(3, 4).Value
ElseIf Not wsB Is Nothing Then
wsB.Cells(1, 1).Value = wsB.Cells(3, 4).Value
ElseIf Not wsC Is Nothing Then
wsC.Cells(1, 1).Value = wsC.Cells(3, 4).Value
ElseIf Not wsD Is Nothing Then
wsD.Cells(1, 1).Value = wsD.Cells(3, 4).Value
End If
' 关闭工作簿
wb.Close SaveChanges:=True
End If
Next File
' 清理错误处理
End Sub
阅读全文