Eu estou criando o código abaixo para ajudar os membros do meu time a atualizar os dados da planilha deles puxando os dados da planilha antiga quando eu não estiver por perto (eu entendo muito pouco de VBA, mas consigo me virar). Então, eu encontrei uma macro muito próxima com a que eu queria e comecei a editá-la de acordo com minhas necessidades.
A primeira procura a planilha antiga; a segunda faz com que apertando no botão 'Search' ele execute a primeira; e a terceira (onde está o meu problema) deveria escrever nas células a fórmula correta. No entanto, o resultado nas célula está sendo:
=VLOOKUP($B11,'[M:\Progress Report\[Progress Report - W2v3.xlsb]Updated Report]Progress Report - W2v3.xlsb]Upd'!$B:$AV,10,FALSE)
ao invés de:
=VLOOKUP($B11,'[M:\Progress Report\[Progress Report - W2v3.xlsb]Updated Report'!$B:$AV,10,FALSE)
Alguém poderia me auxiliar? Ou a corrigir o problema ou fazendo outra fórmula que traga o mesmo resultado. Eu não faço ideia do porquê isso está duplicando.
O mais engraçado é que se eu procurar usando a primeira macro e depois que encontrar o nome da planilha, eu apagar o endereço e apagar a extensão, funciona. Só que a galera aqui se confunde toda nisso, aí fica dando erro. Por isso preciso da fórmula funcionando perfeitinha.
Agradeço imensamente a todos desde já.
Código: Selecionar todos
Public Function Localizar_Arquivo() As String
Dim Extensão, Título_do_Programa As String, Arquivo As Variant
Extensão = "Excel File (*.XLS;*.XLSX;*.XLSB),"
Título_do_Programa = "Search File"
ChDrive ("C")
ChDir ("C:\")
With Application
Filename = .GetOpenFilename(Extensão, 3, Título_do_Progama)
ChDrive (Left(.DefaultFilePath, 1))
ChDir (.DefaultFilePath)
MsgBox "Do not forget to delete the path (C:\...\) and the extension (.xlsb)", vbOKOnly + vbInformation
End With
If Filename = False Then
MsgBox "No File Selected"
Exit Function
End If
Localizar_Arquivo = Filename
End Function
Private Sub CommandButton1_Click()
txt_Procurar = Localizar_Arquivo
End Sub
Private Sub cmd_PROCV_Click()
Dim ThisB As Variant
Set ThisB = ThisWorkbook
If txt_Procurar.Text = "" Then
txt_Procurar.Text = ""
Set Vlookup = Form
End If
ThisB.Activate
ThisB.Sheets("Updated Report").Activate
Range("D4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,3,false)"
Range("E4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,4,false)"
Range("J4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,9,false)"
Range("K4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,10,false)"
Range("L4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,11,false)"
Vlookup.Hide
MsgBox "Please check if your data was accurately recovered", vbOKOnly, "Data Restored"
End Sub