VBA宏查找目录中的工作表计数
我对VBA一点也不擅长,但我很想知道是否有方法可以计算工作簿中的工作表数量,该工作簿循环用于文件夹中的所有文件 例如,A1列出文件名,B1显示图纸数量 A1 B1 book1 5 book2 6VBA宏查找目录中的工作表计数,vba,excel,Vba,Excel,我对VBA一点也不擅长,但我很想知道是否有方法可以计算工作簿中的工作表数量,该工作簿循环用于文件夹中的所有文件 例如,A1列出文件名,B1显示图纸数量 A1 B1 book1 5 book2 6 在for循环中,打开文件(假设它们都是excel)并获取工作表的计数 比如: For Each objFile In objFolder.Files writeCell = ws.Cells(ws.UsedRange.Rows.Count + 1, 1) writ
在for循环中,打开文件(假设它们都是excel)并获取工作表的计数 比如:
For Each objFile In objFolder.Files
writeCell = ws.Cells(ws.UsedRange.Rows.Count + 1, 1)
writeCell.Value = objFile.Name
'ADD A WORKSHEET AND PASTE "=SHEETS()" in A1 the copy value of a1 in to list
'close files with out saving
Set wb = Workbooks.Open(objFile.Name)
writeCell.Offset(,1).value = wb.Worksheets.Count()
wb.Close(false)
Next
上面的UDF应打开指定文件夹中的所有文件,并在新工作表上为您提供每个工作簿中的工作表数请查看下面的内容-注意,您应在空白工作表中运行此操作
Set CurrentWB = ActiveWorkbook
Dim folderPath As String
Dim Filename As String
Dim wb As Workbook
Dim J As Long
Dim N As Long
Dim lc As Long
Dim lr As Long
'UPDATE FOLDER PATH OF WHERE XLS FILES ARE LOCATED
folderPath = "C:\Users\username\Desktop\test\" 'change to suit
J = 2
' Column Headers
CurrentWB.Sheets(1).Range("A1").Value = "Filename"
CurrentWB.Sheets(1).Range("B1").Value = "# of Sheets"
If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\"
'YOU CAN CHANGE TO BE ANY FILE TYPE BUT CURRENTLY SET TO .XLSX
Filename = Dir(folderPath & "*.xlsx")
Do While Filename <> ""
Application.ScreenUpdating = False
Set TempWB = Workbooks.Open(folderPath & Filename)
' Counts Per Worksheet
N = ActiveWorkbook.Worksheets.Count
CurrentWB.Sheets(1).Range("A" & J).Formula = Filename
CurrentWB.Sheets(1).Range("B" & J).Formula = N
' Close Temporary Workbook
TempWB.Close False
J = J + 1
Filename = Dir
Loop
Set CurrentWB=ActiveWorkbook
将folderPath设置为字符串
将文件名设置为字符串
将wb设置为工作簿
Dim J尽可能长
长
如长
变暗lr为长
'更新XLS文件所在位置的文件夹路径
folderPath=“C:\Users\username\Desktop\test\”,根据需要进行更改
J=2
'列标题
CurrentWB.Sheets(1).Range(“A1”).Value=“文件名”
当前工作表(1).范围(“B1”).Value=“#工作表”
如果正确(folderPath,1)“\”则folderPath=folderPath+“\”
'您可以更改为任何文件类型,但当前设置为.XLSX
Filename=Dir(folderPath&“*.xlsx”)
文件名“”时执行此操作
Application.ScreenUpdating=False
设置TempWB=Workbooks.Open(文件夹路径和文件名)
'每个工作表的计数
N=ActiveWorkbook.Worksheets.Count
CurrentWB.Sheets(1).Range(“A”&J).公式=文件名
当前工作表(1).范围(“B”和“J”).公式=N
'关闭临时工作簿
TempWB.Close假
J=J+1
Filename=Dir
环
不添加页面的可能副本,然后运行“工作表”功能并复制它。唯一的相似之处是在文件中循环,我在这一部分没有问题。您可以使用工作表.add
添加工作表,然后打开文件并读取工作表.count()
来添加计数。您在这一部分也不太好,因为您在VBA中不必要地使用了脚本.FileSystemObject
,而在VBA中它是绝对不需要的,由于VBA具有本机功能,可以检索文件夹中的文件列表并打开工作簿。writeCell.Value=objFile.Name
表示存在错误,请确保检查文件是否为“*.xls”在尝试打开它之前,请确保在代码顶部声明WriteCell为范围并将WriteCell作为工作簿。这将有助于识别错误。
Sub ListallFiles()
Dim sFileName As String
Dim sFolderPath As String: sFolderPath = "C:\Temp\" ' Change folder path. Ensure that folder path ends with "\"
Dim oWB As Workbook
Dim oWS As Worksheet
' Get the first excel file name from specified folder
sFileName = Dir(sFolderPath & "*.xls*")
' Add a worksheet
Set oWS = ThisWorkbook.Worksheets.Add
With oWS
' Set folder name in the new sheet
.Range("A1").Value = "The file found in " & sFolderPath & " are:"
' Loop through all excel files in the specified folder
Do While Len(Trim(sFileName)) > 0
' Open workbook
Set oWB = Workbooks.Open(sFolderPath & sFileName)
' Set workbook details in the file
.Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Row + 1).Value = sFileName
.Range("B" & .Cells(.Rows.Count, "B").End(xlUp).Row + 1).Value = oWB.Worksheets.Count
' Close workbook
oWB.Close False
' Clear workbook object
Set oWB = Nothing
' Get next excel file
sFileName = Dir()
Loop
End With
End Sub
Set CurrentWB = ActiveWorkbook
Dim folderPath As String
Dim Filename As String
Dim wb As Workbook
Dim J As Long
Dim N As Long
Dim lc As Long
Dim lr As Long
'UPDATE FOLDER PATH OF WHERE XLS FILES ARE LOCATED
folderPath = "C:\Users\username\Desktop\test\" 'change to suit
J = 2
' Column Headers
CurrentWB.Sheets(1).Range("A1").Value = "Filename"
CurrentWB.Sheets(1).Range("B1").Value = "# of Sheets"
If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\"
'YOU CAN CHANGE TO BE ANY FILE TYPE BUT CURRENTLY SET TO .XLSX
Filename = Dir(folderPath & "*.xlsx")
Do While Filename <> ""
Application.ScreenUpdating = False
Set TempWB = Workbooks.Open(folderPath & Filename)
' Counts Per Worksheet
N = ActiveWorkbook.Worksheets.Count
CurrentWB.Sheets(1).Range("A" & J).Formula = Filename
CurrentWB.Sheets(1).Range("B" & J).Formula = N
' Close Temporary Workbook
TempWB.Close False
J = J + 1
Filename = Dir
Loop