Ir ao conteúdo
  • Cadastre-se

Excel Normalizar botão de imprimir do Userform1


Ir à solução Resolvido por Midori,

Posts recomendados

Estou enviando 2 planilhas uma vazia e uma preenchida. Em ambas eu pus uma macro para abrir apenas o userform1 e depois a planilha, eu criei códigos para que no userform1 ao preencher os quadros de texto preencha as linhas h2 e h3, ao preencher essas linhas existe uma macro que abre um arquivo e exclui algumas colunas, copia os dados dessa planilha que foi aberta através da macro e cola os dados na planilha teste que estou enviando ( com base no valor que preencho na célula h2 – macro no botão vazio) e outra macro que com base na informação que eu preencho no userform1, vai para a linha h3 e a macro copia valores de um outro arquivo que é aberto automaticamente e cola na minha planilha teste.

 

O meu problema é que através do botão quando eu abro a planilha as macros funcionam perfeitamente, mas não funcionam quando eu clico em imprimir no botão do userform1 que é aberto automaticamente ao abrir a planilha. Pode me ajudar?

Desktop.zip

Link para o comentário
Compartilhar em outros sites

Em 14/06/2022 às 13:50, LucasExcel disse:

O meu problema é que através do botão quando eu abro a planilha as macros funcionam

Qual botão?

 

Em 14/06/2022 às 13:50, LucasExcel disse:

mas não funcionam quando eu clico em imprimir

Não funciona de que forma? Dá erro de execução?

Link para o comentário
Compartilhar em outros sites

@Midori A minha planilha atual possui o user form que abre automaticamente com a planilha e dois botões dentro da planilha, o botão vazio, que roda a macro para abrir um arquivo csn e copiar dados e colar na minha planilha do exemplo, e o mesmo acontece para o botão cheio, porém com o outro arquivo e em outro local. Porém quando eu tento que essas duas macros sejam rodadas automaticamente atraves do botão imprimir a função de copiar e colar acontecem antes de abrir o arquivo em csv e gera erro.

 

Anexei os arquivos csn

Desktop.zip

Link para o comentário
Compartilhar em outros sites

Não precisa usar API para abrir um arquivo csv, isso pode ser feito com Workbooks.Open. E esses comandos OnTime são desnecessários. Coloque os arquivos csv no mesmo diretório da planilha e faça um teste,

 

Enum Comboio
    Vazio = 1
    Cheio = 2
End Enum

Sub CopiaCSV(Nome As String, Tipo As Comboio)
    Dim ArqCSV  As Workbook
    Dim Area    As Range
     
    Set ArqCSV = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & Nome & ".csv", Local:=True)
        
    If Tipo = Cheio Then
        Set Area = ArqCSV.ActiveSheet.[I9]
        ArqCSV.ActiveSheet.Range(Area, Area.End(xlDown)).Copy
        ThisWorkbook.ActiveSheet.[O6].PasteSpecial xlPasteValues
    ElseIf Tipo = Vazio Then
        Call ArqCSV.ActiveSheet.[D:H].Delete(Shift:=xlToLeft)
        Set Area = ArqCSV.ActiveSheet.[C2:D2]
        ArqCSV.ActiveSheet.Range(Area, Area.End(xlDown)).Copy
        ThisWorkbook.ActiveSheet.[M6].PasteSpecial xlPasteValues
    End If
    Application.CutCopyMode = False
    Call ArqCSV.Close(False)
End Sub

Sub CopiaVazio()
    Call CopiaCSV([H2], Vazio)
End Sub

Sub CopiaCheio()
    Call CopiaCSV([H3], Cheio)
End Sub

 

E no fórmulário é só chamar a sub CopiaCSV com os mesmos argumentos.

Link para o comentário
Compartilhar em outros sites

Obrigado porém ainda não consegui, retirei os comandos Ontime, criei um novo módulo e inserir a macro que voce me enviou acima,e coloquei todos os arquivos CSV e o arquivo da planilha que estamos utilizando na mesma pasta = diretório.

 

Arquivo em anexo.

No botão imprimir deveria ficar assim, correto?

 

Private Sub CommandButton1_Click()
Call CopiaCSV
Call TextBox1_Change
Call TextBox2_Change
Call Salvar
Call Macro1
Call Macro2
Call Apagar

End Sub

 

E a macro que voce me enviou assim, correto?

1.thumb.PNG.5c0f7e5e9a1a71e4c1e9cd358a6ed469.PNG

Teste.zip

Link para o comentário
Compartilhar em outros sites

Nessa macro que você enviou ele pula do comando If tipo = Cheio para o Elseif Tipo e não copia os dados e nem faz a colagem no arquivo principal. 

 

  If Tipo = Cheio Then
        Set Area = ArqCSV.ActiveSheet.[I9]
        ArqCSV.ActiveSheet.Range(Area, Area.End(xlDown)).Copy
        ThisWorkbook.ActiveSheet.[O6].PasteSpecial xlPasteValues
 

  ElseIf Tipo = Vazio Then

 

 

Anteriormente a macro 1 e macro 2 faziam essa tarefa de copiar vazia e copiar cheio porém quando eu apertava o botão imprimir não era seguido uma ordem nos comandos e sempre copiava e colava em locais errados,.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!