Boa tarde, prezados.
Preciso desenvolver uma solução que tem me gerado muitas dúvidas. É o seguinte:
Tenho uma planilha com, aproximadamente, 1900 registros (dispostos em linhas). Esta planilha é uma consolidação dos dados presentes em 1900 arquivos do excel que estão em um diretório qualquer. A planilha de consolidação foi preenchida manualmente à medida que os 1900 arquivos eram construidos por outro setor da empresa. O fato é o seguinte: Eles esqueceram de adicionar uma informação crucial à planilha de consolidação e agora resta a mim tentar corrigir o problema adicionando esta informação à planilha de consolidação.
Resumindo, preciso copiar os dados das celulas A48, A49, A50 e A51 (concatenados dentro de uma uma variável) de cada um dos arquivos em uma célula da coluna H da linha referente àquele arquivo. Por exemplo: O arquivo (workbook) X refere-se ao Sr João, cujo ID é igual a 29. Preciso procurar na planilha consolidada a linha referente ao nome: João e ao ID: 29 e colar as informações das células A48, A49, A50 e A51 do arquivo X na coluna H da planilha consolidada.
Fazendo uma busca aqui na base do fórum e em outros fóruns, cheguei ao código disponibilizado pelo Mauro Coutinho que adaptei pra conseguir abrir um desses arquivos e copiar as informações, eis o código:
Sub ReadDataFromAllWorkbooksInFolder()
Dim FolderName As String, wbName As String, cValue1 As Variant, cValue2 As Variant, cValue3 As Variant, cValue4 As Variant, cObs As Variant
Dim wbList As String
'Path (Diretorio) -Ajustar o Caminho
FolderName = "C:Planilhando"
'Nome do Arquivo de onde extrairemos a informação
wbName = Dir(FolderName & "" & "*.xls")
'Armazenamos nas Variaveis
wbList = wbName
wbName = Dir
'1ª linha
'le o Valor no workbook
cValue1 = GetInfoFromClosedFile(FolderName, wbList, "Plan1", "A5")
'2ª linha
'le o Valor no workbook
cValue2 = GetInfoFromClosedFile(FolderName, wbList, "Plan1", "A6")
'3ª linha
'le o Valor no workbook
cValue3 = GetInfoFromClosedFile(FolderName, wbList, "Plan1", "A7")
'4ª linha
'le o Valor no workbook
cValue4 = GetInfoFromClosedFile(FolderName, wbList, "Plan1", "A8")
'Coloca o valor na variavel
cObs = cValue1 & "; " & cValue2 & "; " & cValue3 & "; " & cValue4
'Coloca o Valor na Celula
Cells(2, 8).Value = cObs
End Sub
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, _
wsName As String, _
cellRef As String) As Variant
Dim arg As String
GetInfoFromClosedFile = ""
If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""
If Dir(wbPath & "" & wbName) = "" Then Exit Function
arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function
Minhas dúvidas:
1) Do jeito que está o código ele só pega as informações do primeiro arquivo. Como fazer para ele ler todos os arquivos da pasta?
2) Como fazer pra que ele copie as informações corretas no local correto? (Acredito conseguir fazer isso comparando os valores Nome e ID de cada uma das linhas aonde irei colar as informações. Contudo, se alguém tiver uma outra sugestão, eu serei grato!)
Muito obrigado pela atenção!
Saudações,
Postado : 06/12/2012 12:11 pm