- 10 Out 2019 às 17:13
#49109
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!
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!