有一个比较复杂的VBA问题想请教一下
我现在有几百个文档,然后我把他们的存储路径粘贴在了一个新的表格最后一列
这些文档每一个有七个工作表,名字分别是report1, report2...是一些数据的记录
我想用存储路径那一列提取文档,统计每个文档每个工作表的行数,并且输出到新的文档里
新的文档第一行标题就是report1, report2...存储路径,然后把每个文档每个工作表的行数依次统计输出到每一行
请问有什么好的实现方法吗?
有一个比较复杂的VBA问题想请教一下
我现在有几百个文档,然后我把他们的存储路径粘贴在了一个新的表格最后一列
这些文档每一个有七个工作表,名字分别是report1, report2...是一些数据的记录
我想用存储路径那一列提取文档,统计每个文档每个工作表的行数,并且输出到新的文档里
新的文档第一行标题就是report1, report2...存储路径,然后把每个文档每个工作表的行数依次统计输出到每一行
请问有什么好的实现方法吗?
m0_65266895 上午好☀️☀️☀️️
本答案参考通义千问
要使用VBA编写一个宏来实现这个需求,你可以按照以下步骤操作:
创建一个新的空白工作簿作为结果文件:
添加标题行:
编写VBA宏:
使用VBA编写一个宏来遍历指定的文件夹,统计每个工作表的行数。以下是一个基本的VBA代码示例,假设你的文件路径都在Sheet1
的A2:A
区域:
Sub CountRowsInMultipleWorksheets()
Dim wb As Workbook
Dim ws As Worksheet
Dim filePath As String
Dim fileIndex As Long
Dim resultSheet As Worksheet
Dim i As Long
' 设置结果工作表
Set resultSheet = ThisWorkbook.Sheets("Result")
' 遍历文件路径
For fileIndex = 2 To Range("A" & Rows.Count).End(xlUp).Row
filePath = Sheets("Sheet1").Cells(fileIndex, 1)
' 打开每个文件
Set wb = Workbooks.Open(filePath)
' 循环处理每个工作表
For i = 1 To 7 ' 假设你有7个工作表
Set ws = wb.Worksheets("report" & i)
resultSheet.Cells(fileIndex, i + 1) = ws.Rows.Count ' 统计行数并写入对应列
Next i
' 关闭文件
wb.Close False ' False表示不保存更改
Next fileIndex
End Sub
运行宏:
Alt + F11
),或者通过"开发" -> "Visual Basic"打开。CountRowsInMultipleWorksheets
运行它。清理工作:
请注意,这个代码假设文件夹中的每个Excel文件都有7个工作表,并且文件路径都在Sheet1
的第一列。如果你的情况不同,可能需要调整代码以适应实际情况。