Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por Igorltx
#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!
Avatar do usuário
Por Jimmy
Avatar
#49116
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
Avatar do usuário
Por Jimmy
Avatar
#49119
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
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord