Ir ao conteúdo

Excel Normalizar botão de imprimir do Userform1


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

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

Postado
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?

Postado

@Midori Botão "Imprimir".

 

Quando eu abro a planilha abre um userform, eu inserir uma macro para abrir o userform junto da planilha, eu preencho o userform e o botão é o "Imprimir".

 

 

 

 

Postado

@LucasExcel Aqui não vi nada de errado ao clicar no botão Imprimir. Como você não anexou o arquivo csv tive que comentar essa linha. Para facilitar, mostre um exemplo de entrada nos dois TextBox do formulário e explique o que você espera que aconteça ao clicar no botão Imprimir.

Postado

@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

Postado

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.

Postado

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

Postado

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,.

  • Solução
Postado

Aqui copiou os dados do csv, veja que as colunas M, N e O foram preenchidas,

 

Não é assim que deve ficar? Se não for mostre um exemplo de como deve ser.

 

Imagem.png.7a465012cf55c32aa7edecc141f3853e.png

  • Obrigado 1

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!