Ir ao conteúdo
  • Cadastre-se
erickmonteiro

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde erick

 

Para o pessoal te ajudar, você também tem que ajudar, anexe uma planilha de exemplo, com o código instalado e alguns dados laçados.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consigo anexar os arquivos .xlsm  ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você ZIPAR o arquivo que o fórum aceita.

 

[]s

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano,valeu, vou refazer essa planilha ai pra ficar mais leve mesmo, 

mas ai vou ter aquele mesmo problema do formulario, nao consigo nem a pau colocar ele pra rodar enquanto envio os dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara o envio dos dados é muito rápido, o que está pesando é a planilha

 

testa essa

testes.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente cara, ficou muito mais leve essa ai, valeu, só que a macro nao rodou não... ai ela funcionou?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!