Ir ao conteúdo
  • Cadastre-se

Abrir um Formulario enquanto executa macro Copiar/Colar Excel


Posts recomendados

Galera, bom dia!

 

Sou novo no Vba e estou com uma dúvida aparentemente simples:

 

Tenho uma macro que copia e cola dados de uma planilha em outra, observem:

 

------------------------------------------------------------------------------------------------------

 

Sub Teste()
    
    Workbooks.Open ("R:\CERTIFICADOS\Lista Certificados (GERAL).xlsm")
 
    ActiveWorkbook.Sheets("Plan1").[b6:B100000].Value = ThisWorkbook.Sheets("PT-LC-001").[b6:B100000].Value
    ActiveWorkbook.Sheets("Plan1").[C6:C100000].Value = ThisWorkbook.Sheets("PT-LC-001").[C6:C100000].Value
    ActiveWorkbook.Sheets("Plan1").[D6:D100000].Value = ThisWorkbook.Sheets("PT-LC-001").[D6:D100000].Value
    ActiveWorkbook.Sheets("Plan1").[E6:E100000].Value = ThisWorkbook.Sheets("PT-LC-001").[E6:E100000].Value
    ActiveWorkbook.Sheets("Plan1").[F6:F100000].Value = ThisWorkbook.Sheets("PT-LC-001").[F6:F100000].Value
    ActiveWorkbook.Sheets("Plan1").[G6:G100000].Value = ThisWorkbook.Sheets("PT-LC-001").[G6:G100000].Value
    ActiveWorkbook.Sheets("Plan1").[H6:H100000].Value = ThisWorkbook.Sheets("PT-LC-001").[H6:H100000].Value
    ActiveWorkbook.Sheets("Plan1").[i6:I100000].Value = ThisWorkbook.Sheets("PT-LC-001").[i6:I100000].Value
    ActiveWorkbook.Sheets("Plan1").[J6:J100000].Value = ThisWorkbook.Sheets("PT-LC-001").[J6:J100000].Value
    ActiveWorkbook.Sheets("Plan1").[K6:K100000].Value = ThisWorkbook.Sheets("PT-LC-001").[K6:K100000].Value
    ActiveWorkbook.Sheets("Plan1").[M6:M100000].Value = ThisWorkbook.Sheets("PT-LC-001").[M6:M100000].Value
    ActiveWorkbook.Sheets("Plan1").[N6:N100000].Value = ThisWorkbook.Sheets("PT-LC-001").[N6:N100000].Value
    ActiveWorkbook.Sheets("Plan1").[O6:O100000].Value = ThisWorkbook.Sheets("PT-LC-001").[O6:O100000].Value
    ActiveWorkbook.Sheets("Plan1").[P6:P100000].Value = ThisWorkbook.Sheets("PT-LC-001").[P6:P100000].Value
    ActiveWorkbook.Sheets("Plan1").[s6:S100000].Value = ThisWorkbook.Sheets("PT-LC-001").[s6:S100000].Value
    ActiveWorkbook.Close savechanges:=True
    
    
End Sub
________________________________________________________________
 
e tenho um formulário com webbroser de um (gif animado loading) que gostaria que aparecesse enquanto essa macro acima fosse exercida
 
mas se antes dela eu colocar : UserForm1.show é aberto o formulário, mas a macro de copiar e colar nao funciona, gostaria que ficasse exibido o formulario enquanto a macro de copiar e colar e quando ela terminasse o formulário fechasse (unload UserForm1).
 
Alguem tem ideia de como fazer?
 
Obrigado
Link para o comentário
Compartilhar em outros sites

eu não sei o que é, mas tem algo estranho nessa macro e o fato de abrir o user form não funcionar

mas quando uma macro está rodando prende o funcionamento tanto da planilha quanto do vba e isso inclui o userform

 

mas tem coisa que pode ser melhorada

usar range completa em vez de coluna por coluna

    ActiveWorkbook.Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2        ActiveWorkbook.Sheets("Plan1").Range("M6:P100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("M6:P100000").Value2            ActiveWorkbook.Sheets("Plan1").Range("S6:S100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("S6:S100000").Value2

e mais uma coisa, essa macro não devia demorar tanto para atuar assim

 

 

quando você fala de uma planilha para outra você está falando de ABAS ?

 

ActiveWorkbook =planilha ativa

ThisWorkbook= planilha onde está a macro

 

no caso você está chamando a macro de outra planilha para preencher a planilha ativa com os dados dela?

se for isso, quando se executa o userfor da outra planilha a outra planilha passa a ser a ativa

 

para isso funcionar você tem que referenciar o nome da planilha para onde vai os dados

 

Workbook("nomeplanilhaNova").Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2

 

assim não importa qual planilha vai estar ativa e você pode fazer a operação a partir da planilha onde tem as macro e o usefor que você quer

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

valeu Edcronos, vou tentar fazer aqui:

 

O objetivo é mandar da Lista de controle pra lista de certificados e enquanto manda mostrar o formulario tipo loading...

to postando as planilhas pra vocês sacarem, to achando elas muito pesadas também, sou novo nessa bagaça kk

valeu

Excel enviar.rar

Link para o comentário
Compartilhar em outros sites

a sua planilha está indo até a ultima linha de usada apesar de não estar preenchida

 

 

 

eu posso sugerir uma serie de mudanças para melhorar a performance

 

deixar toda a lista em uma aba sem formatação , sem formulas como banco de dados

não use tabelas do excel, apenas os dados

deixar uma aba para pesquisa e visualização do que se quer, essa sim pode se colocar as formulas e formatações, mas maneirando

 

essa macro é muito fácil de se fazer, mas essa sua planilha vai agarrar qualquer coisa que colocar

Link para o comentário
Compartilhar em outros sites

como eu não sabia de onde você ia rodar a macro

eu coloquei na 

LISTAS DE CONTROLE (GERAL)

no modulo1

Sub Teste()' Workbooks.Open ("C:\Lista Certificados (GERAL).xlsm")    With ThisWorkbook.Sheets("PT-LC-001")        l = .Cells(Rows.Count, 2).End(xlUp).Row    ' ultima linha com dados da planilha        rane = "B6:S" & l    ' monta a range        Workbooks("Lista de Certificados (GERAL).xlsm").Sheets("Plan1").Range(rane).Value2 = .Range(rane).Value2        '  ActiveWorkbook.Close savechanges:=True 'salvar True    End WithEnd Sub
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...