Olá galera,
Estou fazendo uma planilha que gera um relatório de vendas (REL.xlsm) buscando dados de outras planilhas (BASE1, BASE2, etc).
Consegui fazer com que ela busque os valores através de diversas macros, sendo uma para cada base.
Minha ideia é melhorar isso, fazendo com que, ao clicar em um botão "atualizar dados", me venha uma caixa de seleção com as bases disponíveis e a partir daí o nome/caminho da planilha seja armazenado numa variável e a atualização seja realizada.
Como pode-se ver no módulo 1, está funcionando dessa forma (com uma sub para cada base):
Sub BASE1()
'
' Buscar Clientes e Vendas BASE1
'
'Calculo Manual
Application.Calculation = xlManual
'Nao Apresentar Caixa de Dialogo
Application.DisplayAlerts = False
'Nao Piscar Tela
Application.ScreenUpdating = False
'Variável
Dim A As Boolean 'True se já estiver aberto e false caso contrário
Dim WBName As String
'Abrir Arquivo Origem
'Se estiver aberto
On Error Resume Next
WBName = Workbooks("BASE1.xlsx").Name
If Err.Number = 0 Then
A = False
Else 'Se não estiver aberto
A = True
Workbooks.Open Filename:=ThisWorkbook.Path & "BASE1.xlsx"
End If
'Copiar e Colar Vendas
Windows("BASE1.xlsx").Activate
Sheets("Plan1").Range("A:C").Copy
Windows(ThisWorkbook.Name).Activate
Sheets("Plan1").Range("A1").PasteSpecial Paste:=xlPasteValues
'Fechar Arquivo Origem
If A = True Then
Workbooks("BASE1.xlsx").Close savechanges:=False
Else
End If
'Aponta Empresa Calculada
Windows(ThisWorkbook.Name).Activate
Sheets("Plan1").Range("D1").Value = "BASE1"
'Calculo Automatico
Application.Calculation = xlAutomatic
'Nao Apresentar Caixa de Dialogo
Application.DisplayAlerts = True
'Nao Piscar Tela
Application.ScreenUpdating = True
MsgBox "TROCA DE EMPRESA CONCLUÍDA - BASE1"
End Sub
Quero fazer algo desse tipo, só que não consigo "chamar" o arquivo/caminho através da variável (como está no módulo2):
Sub Base()
'
' Buscar Clientes e Vendas BASE2
'
'Calculo Manual
Application.Calculation = xlManual
'Nao Apresentar Caixa de Dialogo
Application.DisplayAlerts = False
'Nao Piscar Tela
Application.ScreenUpdating = False
'Variável
Dim Arquivo As String
Dim A As Boolean 'True se já estiver aberto e false caso contrário
Dim WBName As String
'Abrir Arquivo Origem
'Se estiver aberto
On Error Resume Next
WBName = Workbooks(Arquivo).Name
If Err.Number = 0 Then
A = False
Else 'Se não estiver aberto
A = True
Workbooks.Open Filename:=ThisWorkbook.Path & "" & Arquivo
End If
'Copiar e Colar Vendas
Windows(Arquivo).Activate
Sheets("Plan1").Range("A:C").Copy
Windows(ThisWorkbook.Name).Activate
Sheets("Plan1").Range("A1").PasteSpecial Paste:=xlPasteValues
'Fechar Arquivo Origem
If A = True Then
Workbooks(Arquivo).Close savechanges:=False
Else
End If
'Aponta Empresa Calculada
Windows(ThisWorkbook.Name).Activate
Sheets("Plan1").Range("E1").Value = Arquivo
'Calculo Automatico
Application.Calculation = xlAutomatic
'Nao Apresentar Caixa de Dialogo
Application.DisplayAlerts = True
'Nao Piscar Tela
Application.ScreenUpdating = True
MsgBox "TROCA DE EMPRESA CONCLUÍDA - " & Arquivo
End Sub
Agradeço a ajuda
OBS: talvez eu demore alguns dias para entrar novamente no site, pois estarei viajando
Postado : 26/10/2015 11:41 pm