Notifications
Clear all

Executar Macro de outra Planilha

9 Posts
2 Usuários
0 Reactions
3,370 Visualizações
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Estou tentando criar uma macro que abre outra planilha e executa a macro que está salvo nessa planilha que vou abrir.

Meu problema é, não consigo executar a macro que está salvo na outra planilha abaixo meu código para quem puder ajudar :D

ps: na outra planilha a macro (Atualiza!) está rodando normalmente se eu executar manualmente ou no auto_open, porém se eu tento rodar com o código abaixo não da certo.

Sub Atualiza2()

A = Time
ul = Planilha1.Range("b" & Rows.Count).End(xlUp).Row


For I = 2 To ul
relatorio = Workbooks("Atualiza Relatórios").Sheets("Relatorios").Range("B" & I)

Workbooks.Open Filename:=relatorio, WriteResPassword:="12345678", ignoreReadOnlyRecommended:=True

Debug.Print

relatorio2 = Workbooks("Atualiza Relatórios").Sheets("Relatorios").Range("B" & I).Value

'O erro está acontecendo nessa linha vou inserir a imagem com o erro
Application.Run Macro:=relatorio2 + "!Atualiza"

Next I

B = Time
C = B - A

Windows.Application.Workbooks("Atualiza Relatórios").Activate
[C2] = C

End Sub

Imagem com o erro:
[img][/img]

 
Postado : 06/05/2017 5:56 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite José

Veja se o link abaixo pode te ajudar:

http://www.tomasvasquez.com.br/blog/mic ... no-excel-2

Se foi útil, clique na mãozinha.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/05/2017 6:44 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O que tem em : "relatorio = Workbooks("Atualiza Relatórios").Sheets("Relatorios").Range("B" & I)" ? O Caminho e Nome do arquivo ?
Porque está repetindo a linha referente a instrução acima só aterando a Variável para "relatório2" ?

Fiquei confuso com algumas instruções, e sem conhecer os detalhes do modelo, não sei nem como está conseguindo abrir o outro arquivo.

De qualquer forma, tie o sinal de "+" e troque por "&" e veja se da certo.
Application.Run Macro:=relatorio2 & "!Atualiza"

É interessante tambem dar uma olhada no modelo do link abaixo :
Run a macro or function from another workbook
http://www.vbaexpress.com/kb/getarticle ... =279#instr

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/05/2017 7:11 pm
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Obrigado pelo link eu estava montando minha macro exatamente com base nas informações desse link rsrsrs, mas obrigado.

Boa noite José

Veja se o link abaixo pode te ajudar:

http://www.tomasvasquez.com.br/blog/mic ... no-excel-2

Se foi útil, clique na mãozinha.

[]s

 
Postado : 07/05/2017 7:17 pm
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Olá Mauro, obrigado por ter respondido.

Na variável "relatorio" ele pega o caminho da pasta para abrir no Workbooks.Open.

de fato eu poderia utilizar a mesma variável é que eu estava fazendo outros testes rsrsrs. De qualquer forma eu tentei apenas com a mesma variável e também trocando o sinal de "+" por "&", porém a mensagem de erro é a mesma que eu anexei. Muito estranho é como se não reconhecesse a Macro do outro arquivo.

O que tem em : "relatorio = Workbooks("Atualiza Relatórios").Sheets("Relatorios").Range("B" & I)" ? O Caminho e Nome do arquivo ?
Porque está repetindo a linha referente a instrução acima só aterando a Variável para "relatório2" ?

Fiquei confuso com algumas instruções, e sem conhecer os detalhes do modelo, não sei nem como está conseguindo abrir o outro arquivo.

De qualquer forma, tie o sinal de "+" e troque por "&" e veja se da certo.
Application.Run Macro:=relatorio2 & "!Atualiza"

É interessante tambem dar uma olhada no modelo do link abaixo :
Run a macro or function from another workbook
http://www.vbaexpress.com/kb/getarticle ... =279#instr

[]s

 
Postado : 07/05/2017 7:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Olá Mauro, obrigado por ter respondido.

Na variável "relatorio" ele pega o caminho da pasta para abrir no Workbooks.Open.

de fato eu poderia utilizar a mesma variável é que eu estava fazendo outros testes rsrsrs. De qualquer forma eu tentei apenas com a mesma variável e também trocando o sinal de "+" por "&", porém a mensagem de erro é a mesma que eu anexei. Muito estranho é como se não reconhecesse a Macro do outro arquivo.

José, o que está confuso é que diz que na primeira Variável "relatorio" pega o caminho da pasta, mas acho que é o caminho mais o nome do arquivo porque não vejo referencia ao nome do arquivo.

Só que após armazenar você tem a instrução "Workbooks.Open" pra abri-lo, com isto ele fica em primeiro plano, depois você utiliza outra Variável "relatorio2" referenciando o primeiro arquivo, ou seja o mesmo que já esta aberto e armazenando novamente o caminho e nome do arquivo, então para executar a macro do segundo arquivo, uma vez que está aberto não precisa do caminho novamente e sim somente o nome da Pasta (WorkBook), lembrando tambem, se baixou o exemplo que citei e ler as rotinas o correto é referenciar, definir e Setar as variáveis.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/05/2017 9:05 pm
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Olá Mauro, entendi o que você falou eu tentei também utilizar o exemplo abaixo para executar minha macro, porém deve ser algum bloqueio de segurança é o único motivo que eu vejo para não rodar as macros, pois eu só alterei o nome do arquivo e o diretório para executar, mas da a mesma mensagem de erro.

Sub executa()
‘Declaração de variaveis para facilitar
Dim Arquivo As String, diretório As String
‘Variavel Arquivo recebe o nome do arquivo que contem a outra macro, mude para o nome do seu arquivo
Arquivo = “Exemplo.xls”
‘Variavel diretório recebe o caminho do diretório que contem a outra macro, mude também
diretório = “C:Meus Documentos”
‘Comando para abrir o arquivo no diretorio.Note que juntei diretorio + arquivo com o caratere &
Workbooks.Open diretório & Arquivo
‘Comando para executar a macro “Macroteste” do diretorio e arquivo descrito acima, mude para o nome da macro que deseja executar no outro arquivo, com a ! na frente
Application.Run Macro:=Arquivo + “!Macroteste”
‘Fecha o arquivo em questão após a execução da macro.
Windows(Arquivo).Close
End Sub
 
Postado : 08/05/2017 4:55 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se possível anexe seus modelos para dar uma olhada.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/05/2017 5:21 am
(@joseborges)
Posts: 10
Active Member
Topic starter
 

Se possível anexe seus modelos para dar uma olhada.

Mauro, não sei o que pode acontecer testei de todas as formas criei arquivos do zero para teste e funcionou normalmente, porém os arquivos que quero executar as atualizações de relatórios não vai de forma nenhuma.

Como se as macros da planilha que quero abrir estivessem desabilitadas não sei se é porque nessa planilha tem um Workbook_Open, pois ao abrir ela executa, porém a macro Application.Run Macro:=Arquivo & "!Atualiza" não chama de forma nenhuma, gostaria de poder compartilhar meu arquivo, porém não posso.

Vou tentar outros testes aqui se eu conseguir eu posto aqui no fórum, ou se você souber de mais alguma coisa que possa me ajudar me avisa, de qualquer forma muito obrigado pela ajuda até agora.

 
Postado : 08/05/2017 6:14 am