Estou começando a mexer com o VBA porque surgiu uma necessidade de automatizar a extração de valores arquivados em várias planilhas. De inicio comecei com o PROCV apontando para esses arquivos, mas como todas essas planilhas teriam necessariamente de estar previamente abertas, tive de começar a fazer isso em VBA, mas estou com um problema no código a seguir, que não estou conseguindo resolver.
Esses são os arquivos que estou usando:
OrigemDestino
- Arquivos : Extracao_mensal_201003. Xlsx ... Extracao_mensal_201510. Xlsx ( de MAR/2010 até OUT/2015 )
- Folha : Plan3
- Celula : B14
- Arquivo: Planilha atual
- Celula : C3
O problema é que o programa está lendo apenas o primeiro arquivo apontado no teste abaixo ( Extracao_mensal_201404. Xlsx ) e mesmo se eu tentar alterar o contador abaixo de 4..7 para 5..7 ele não aceita, dando erro. Já conferi o nome do arquivo se textualmente está coerente, assim como o conteúdo das suas células, mas nada justifica esse erro sem sentido.
Alguém teria alguma luz ?
vbnet code
Sub ImportarDadosSemAbrir()
Dim ExtensionOrigin As String
Dim CaminhoOrigem As String
Dim ArquivoOrigem As String
Dim PastaOrigem As String
Dim RangeOrigem As String
Dim AnoOrigem As String
Dim MesOrigem As String
Dim ExtensionDestino As String
Dim CaminhoDestino As String
Dim ArquivoDestino As String
Dim PastaDestino As String
Dim RangeDestino As String
Dim i As Integer
AnoOrigem = "2014"
MesOrigem = "04"
ExtensionOrigin = ".xlsx"
CaminhoOrigem = "C:\Andre\CR\"
PastaOrigem = "Plan3"
RangeOrigem = "$b$14:$b$14"
CaminhoDestino = CaminhoOrigem
PastaDestino = "Plan1"
'Application.ScreenUpdating = False
For i = 4 To 7
ArquivoOrigem = "Extracao_mensal_" & AnoOrigem & "0" & CStr(i) & ExtensionOrigin
Workbooks.Open Filename:=CaminhoOrigem & ArquivoOrigem, ReadOnly:=True
ThisWorkbook.Activate
ThisWorkbook.Names.Add "Valor", _
RefersTo:="='" & CaminhoOrigem & "[" & ArquivoOrigem & "]" & PastaOrigem & "'!" & RangeOrigem
With Sheets(PastaDestino)
.[c3:c3] = "=Valor" ' Range("c3").Text
.[c3:c3].Copy
Sheets(PastaOrigem).Range(RangeOrigem).PasteSpecial xlPasteValues
End With
ThisWorkbook.Save
ThisWorkbook.Close SaveChanges:=False
'ActiveWorkbook.Save
'ActiveWorkbook.Close
'Application.Quit
'Application.ScreenUpdating = True
Next i
End Sub