locked
Impressão de Formulário RRS feed

  • Pergunta

  • Olá pessoal!

     

    Estou precisando desenvolver um botão em uma planilha que ao ser acionado monte um formulário com dados coletados em algumas células e o imprima.

     

    Estou sem saber por onde começar...

     

    Alguém pode me ensinar o caminho das pedras?

    quinta-feira, 9 de dezembro de 2010 14:45

Todas as Respostas

  • Quando você diz formulário, você se refere aos UserForms do VBE ou uma outra Planilha (guia) da mesma Pasta de Trabalho?
    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    domingo, 12 de dezembro de 2010 12:54
  • Tipo, eu tenho uma planilha com diversas linhas contendo informações ordenadas:

     

    A1 = Nome1

    B1 = Viagem1

    C1 = Solicitante1

    D1 = Destino1

     

    A2 = Nome2

    B2 = Viagem2

    C2 = Solicitante2

    D2 = Destino2

     

    Em uma outra planilha dentro do mesmo arquivo eu tenho um formulário de requisição de viagens que reune as informações por linha da planilha anterior, tipo:

    Motorista ='Lista'!A1

    Motivo ='Lista'!B1

    Solicitante ='Lista'!C1

    Destino = 'Lista'!D1

     

    Atualmente eu estou inserindo manualmente as informações no formulário.

     

    Meu desejo é criar um botão que monte automaticamente o formulário com base na primeira planilha e em seguida o imprima.

     

    É possível?

    segunda-feira, 13 de dezembro de 2010 11:44
  • Veja se é isso: Você quer montar um formulário para os dados que estão na linha 1, depois outro para dados da linha 2, depois outros para dados linha 3, etc. e depois imprimir cada um dos formulários gerados?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    terça-feira, 14 de dezembro de 2010 00:12
  • Isso mesmo!
    terça-feira, 14 de dezembro de 2010 09:01
  • Suponha que você tenha uma Pasta de Trabalho com duas Planilhas. A primeira Planilha, que se chama Lista, possui uma tabela com seus dados. A segunda Planilha, que se chama Modelo, possui um formulário padrão.

    O código abaixo cria uma nova Pasta de Trabalho que contém um número de Planilhas igual ao número de registros da Planilha Lista. Além disso, ao final da rotina, cada uma das Planilhas estará devidamente povoada com os dados da Planilha Lista.

    Sub GeraRelatórios()
      
      'Local onde os valores da Lista são atribuídos na Planilha Modelo
      Const strNome As String = "E5"
      Const strIdade As String = "E7"
      Const strCor As String = "E9"
      Const strCidade As String = "E11"
      
      Dim rLast As Long
      Dim r As Long
      
      Dim wb As Workbook
      Dim wsThis As Worksheet
      Dim ws As Worksheet
      
      Set wsThis = ThisWorkbook.Sheets("Lista")
      
      With wsThis
        rLast = .Cells(.Rows.Count, "A").End(xlUp).Row
      
        Set wb = Workbooks.Add
        
        'A contagem se inicia 2 porque a linha 1 é o cabeçalho
        For r = 2 To rLast
          'Copia um dos Modelos para a nova Pasta de Trabalho
          ThisWorkbook.Sheets("Modelo").Copy Before:=wb.Sheets(1)
          Set ws = wb.Sheets(1)
          'Renomeia a nova Planilha para, por exemplo, o nome de uma
          'pessoa da Planilha Lista:
          ws.Name = .Cells(r, "A")
          'Entra com os registros da tabela em Lista na nova Planilha
          ws.Range(strNome) = .Cells(r, "A")
          ws.Range(strIdade) = .Cells(r, "B")
          ws.Range(strCor) = .Cells(r, "C")
          ws.Range(strCidade) = .Cells(r, "D")
        Next r
      End With
    
    End Sub

    Se ainda estiver com dúvidas, veja um exemplo pronto em:

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    quarta-feira, 15 de dezembro de 2010 01:33
  • Mas vc não conhece um jeito mais simples de fazer? com fórmulas do excel ao invés de VB?
    quarta-feira, 15 de dezembro de 2010 12:50
  • Mas vc não conhece um jeito mais simples de fazer? com fórmulas do excel ao invés de VB?

    Esse código é o mais simples possível. Gaste meia hora do seu tempo tentanto entender, no final da página tem um exemplo pronto para baixar.

    Adotar uma solução por fórmulas pode até ser possível, mas além de não ser automatizado, seria perda de tempo implementar.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    quarta-feira, 15 de dezembro de 2010 20:33
  • OK, obrigado.
    quinta-feira, 16 de dezembro de 2010 09:47