Ir para conteúdo
Fórum Script Brasil
  • 0

Script de Atualização/Cópia de Dados


felipefilp

Pergunta

Boa tarde! 

Estou com um problema em meu trabalho, que creio eu, é simples de se fazer porém meu conhecimento em VBA é um pouco básico ainda! 

É o seguinte: 

Duas planilhas, na primeira eu tenho diversas informações sobre um determinado produto, incluindo nome, lote etc.. e na segunda planilha puxo as informações jogando um lote, que roda uma macro com um SELECT no servidor e puxa os dados daqueles lotes para células abaixo.. 

Exemplo 

Planilha 1: 

Produto         |  Lote  |  Status 

A                    |  123    |     

Planilha 2: 

Lote = 123

__________________________________________

Produto         |  Lote  |  Status 

A                    |  123    |  Utilizado

 

Basicamente tenho que pegar o lote da plan1, jogar na plan2, rodar a macro de atualização (que puxa os dados por sql), aguardar uns momentos (estou utilizando o Application.Wait para isso, não sei se é a melhor forma), depois que gerar os dados, vou na célula que aparece o status, copio e colo na plan1 

Vamos lá, problemas que eu obtive: 

* 1: São varias unidades então, pode aparecer assim: 

Produto         |  Lote  |  Status 

A                    |  123    |  Utilizado

A                    |  123    |  Disponível

A                    |  123    |  Utilizado

A                    |  123    |  Disponível 

Com isso na hora que eu realizo a cópia não fica os dados certinhos, para resolver isso, na hora que vou gravar a colagem de dados na macro eu coloco numa coluna depois e com os parâmetro de transpor e uso o concatenar(), exemplo:

A                    |  123    |  =Concatenar(E3,F3..) | Utilizado | Disponível | Utilizado | Disponível 

Com isso resolve uma parte dos meus problemas, quando eu fazia este processo manual eu abria o notepad (no Windows mesmo), colava todas as células lá, ctrl + a, ctrl + c, ia na célula que eu precisava colocar apertava F2, ctrl + v e já vinha formatado do jeito que eu precisava, não sei se teria outro modo de resolver isso, mas neste caso a resolução do concatenar já está resolvendo bem! 

* 2: Este é o principal, quando eu fui executar o script, no depurador indicou uma linha que eu não consegui resolver, pesquisei um pouco e vi que era referente a consulta no SQL que a planilha fazia, foi o seguinte erro: 

Referesh BackgroundQuery:=False.. (Tinha mais alguns dados mas não estou com a planilha neste momento, só me lembrava dessa parte) 

Quando eu mudava para true, ai acusava um erro mesmo dizendo que a planilha estava fazendo atualizações em segundo plano (creio ser devido ao que falei sobre quando eu ativo a macro de atualização ele faz uma busca no banco de dados para encontrar as informações referentes ao lote digitado. 

 

Acabei escrevendo demais, não sou muito acostumado com fóruns mas desta vez não consegui encontrar solução para o meu problema, se alguém estiver disposto a me ajudar, fico grato! 

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa noite @felipefilp

Vamos devagar, um problema por vez para ir matando a coisas e dando um pouco de alegria por ver as coisas aparecendo.

Manda um cópia da planilha com dados fictícios e fiz a primeira coisa que você precisa que seja feito. Depois de funcionar e você testar vamos para o próximo.

Link para o comentário
Compartilhar em outros sites

  • 0

Ai que está o problema, por ser uma planilha do trabalho, não consigo pegar a parte da atualização com o servidor da empresa pois são duas planilhas uma com os dados que eu preciso de buscar e outra planilha com os "resultados" gerados pela busca, montei um modelo semelhante (porém sem os códigos do SQL) para dar de exemplo (Em anexo os prints, pois notei que não da pra anexar a planilha diretamente, até pensei em upar em algum lugar e enviar o link mas creio que já vai dar pra entender o que eu preciso pelos prints).

O print1 é antes de rodar a "Macro", basicamente a macro pega o lote, cola na outra, clica em atualizar, pega os resultados em status, copia, cola na outra planilha e move uma célula pra baixo para já dar inicio a macro novamente (Estrutura de repetição já resolveu isso tranquilo) 

O principal problema que preciso resolver é o exibido nos prints, o outro é com o Refresh BackgroundQuery:=False mas ele eu consigo contornar por tentativa e erro já que em algumas vezes deu certo a atualização e tal.. 

 

Print2.png

Print1.png

Link para o comentário
Compartilhar em outros sites

  • 0

Não da para ajudar muito sem exemplos.

Apenas a primeira parte de acordo com a ideia:

Sub cPreencherDados()
Dim dWB As Workbook
Dim lWB As Workbook
Dim lLote As Long
Dim totalLinhas As Long
Set lWB = ActiveWorkbook

Dim planDados As String
planDados = "Planilha ATT(Dados).xlsm"
If fPlanOpen(planDados) Then
    Set dWB = Application.Workbooks.Item(planDados)
    
    totalLinhas = lWB.Sheets("Dados").Cells(Rows.Count, "D").End(xlUp).Row
    For lLote = 3 To totalLinhas
        dWB.Sheets("Planilha1").Cells(2, "C").Value = lWB.Sheets("Dados").Cells(lLote, "D").Value
        dWB.Activate
        MsgBox "Executar a macro para atualizar"
    Next lLote
    
Else
    MsgBox "Planilha para preenchimento não esta aberta.", vbCritical, "Aviso"
End If
End Sub

Public Function fPlanOpen(Nome As String) As Boolean
Dim wb As Workbook
On Error Resume Next
Set wb = Application.Workbooks.Item(Nome)
fPlanOpen = (Not wb Is Nothing)
End Function

Planilha exemplo: Link do Zip GoogleDrive

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...