Página 1 de 1

Executar várias macros com 1 botão

Enviado: 10 Out 2019 às 17:13
por Igorltx
Olá pessoal, eu ainda estou caminhando no VBA e nas Macros então estou penando pra executar a seguinte tarefa:
Tenho um formulário de cadastro em um arquivo e um banco de dados em outro. Desejo preencher o formulário e, ao clicar no botão que vincularei a macro, ele transfira os dados para o banco de dados, porém com 2 ressalvas: Se o arquivo do BD estiver aberto os dados são transferidos e se não está aberto ele abre e transfere.

Eu tentei fazer 2 macros gravadas para o procedimento de copiar os dados no BD, uma com o BD aberto e outra fechado, e tentei no Sub do botão chamar as 2 macros com condição.

ficou assim:

*Essa macro é para abrir o BD e gravar os dados se ele estiver fechado:

Sub Submit1()
'
' Submit1 Macro
'

'
Range("A5:D5").Select
Selection.Copy
Workbooks.Open filename:= _
"D:\Users\84193034\Documents\Curso Excel 2010 avançado\testes\BD para alimentação externa.xlsx"
Selection.End(xlDown).Select
Application.Goto Reference:="R1048576C1"
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Select
Windows("Escalação dos times juvenis1.xlsx").Activate
ActiveCell.Range("A1:D1").Select
Selection.ClearContents
ActiveCell.Select
End Sub

*Essa é para só copiar os dados no BD caso ele esteja aberto:

Sub Submit_aberta()
'
' Submit_aberta Macro
'

'
Range("A5:D5").Select
Selection.Copy
Windows("BD para alimentação externa.xlsx").Activate
Application.Goto Reference:="R1048576C1"
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Select
Windows("Escalação dos times juvenis1.xlsx").Activate
ActiveCell.Range("A1:D1").Select
Selection.ClearContents
ActiveCell.Select
End Sub

*E essa foi o do botão pra chamar as macros:

Sub button_submit()
If IsFileOpen("BD para alimentação externa.xlsx") Then
Call Submit_aberta
Else
Call Submit1
End If
End Sub

Function IsFileOpen(filename As String)
End Function

Se eu executar as macros separadamente elas funcionam, mas quando tento colocar a condição pra verificar se a planilha está aberta, ela só funciona se a planilha estiver fechada, pois aberta ele aparece mensagem que a planilha já está aberta e se eu desejo reabrir e perder os dados... algo do tipo.

Como consertar?

Vlw!

Executar várias macros com 1 botão

Enviado: 10 Out 2019 às 18:13
por Jimmy
Olá Igor,

Fica bem difícil responder sua questão sem ter a planilha na mão. Caso contrário, quem for te ajudar vai ter que cria um formulário, criar um DB, etc, só pra poder testar.

Peço que anexe os arquivos necessários, nos quais possamos trabalhar em cima.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Jimmy San Juan

Re: Executar várias macros com 1 botão

Enviado: 10 Out 2019 às 18:25
por Igorltx
Obrigado pela dica Jimmy, segue um arquivo teste que estou fazendo para essa macro

Re: Executar várias macros com 1 botão

Enviado: 10 Out 2019 às 18:55
por Jimmy
Olá,

Segue a planilha com a macro alterada.

Se tiver dúvida em alguma instrução, basta perguntar.

A linha que você estava seguindo funciona, mas era desnecessário ter 4 macros quando 1 só dá conta.
Faltava apenas incluir as linhas que verificam se o DB estava aberto ou não.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan