Este código funcionará da seguinte maneira:
- Abra uma nova pasta de trabalho onde você quiser.
- Cole o código do VBA na macro
-
Na célula A1 da Folha 1, coloque o caminho para a pasta de pastas de trabalho, por exemplo:
C:\users\yourname\folder\
-
Na célula A2, o primeiro intervalo, por exemplo:
J8:Y8
e na célula B2, o nome da planilha:Sheet3
- Na célula A3, o segundo intervalo, por exemplo:
G8:AC8
e na célula B3, o nome da planilha:Sheet4
O melhor deste código é que, se você tiver mais intervalos / planilhas para pesquisar, poderá adicionar as próximas linhas.
Será parecido com isto:
Agora,executeamacroe,apóssuaexecução,elemostraráosresultadosemFolha2,mostrandoonomedoarquivoeonúmerodecélulasvaziasemcadaintervalo.
Subfoldersearch()DimwbkAsWorkbookDimwbk1AsWorkbookDimwksAsWorksheetDimwks2AsWorksheetDimtotaltimeAsLongDimdtDurationAsDateSetwbk=ThisWorkbookSetwks=wbk.Sheets(1)Setwks2=wbk.Sheets(2)starttime=Now()wks2.Cells.ClearContentsdirPath=wks.Cells(1,1)file=Dir(dirPath)rowscounter=0Application.ScreenUpdating=FalseWhile(file<>"")
If InStr(file, "xls") > 0 Then
rowscounter = rowscounter + 1
totalpath = dirPath & file
Set wbk1 = Workbooks.Open(totalpath, , True)
rangelist = True
i = 2
columnscounter = 2
While rangelist = True
thenewrango = wks.Cells(i, 1)
thenewsheet = wks.Cells(i, 2)
emptycount = workbooksearch(wbk1, thenewsheet, thenewrango)
wks2.Cells(rowscounter, 1) = file
wks2.Cells(rowscounter, columnscounter) = emptycount
i = i + 1
columnscounter = columnscounter + 1
If wks.Cells(i, 1) = "" Then
rangelist = False
End If
Wend
wbk1.Close (False)
End If
file = Dir
Wend
Application.ScreenUpdating = True
endtime = Now()
totaltime = DateDiff("s", starttime, endtime)
a = MsgBox("Finished in" & vbCrLf & totaltime & " seconds", vbOKOnly)
End Sub
Function workbooksearch(wbk1 As Workbook, wksname As Variant, rango As Variant)
Dim wks1 As Worksheet
Dim obj As Object
On Error GoTo HandleError
Set obj = wbk1.Sheets(wksname)
Set wks1 = wbk1.Worksheets(wksname)
emptycount = 0
For Each c In wks1.Range(rango)
If c.Value = "" Then
emptycount = emptycount + 1
End If
Next c
workbooksearch = emptycount
Exit Function
HandleError:
workbooksearch = "N/A"
End Function