none
Numero de cópias a imprimir de uma selecção!!!

    Question

  • Olá amigos :)

    Tenho uma pequena Sub num botão na folha Excel para imprimir uma seleção pre-definida:

    Quero alterar o código no final para que me mostre uma Cx de diálogo a perguntar o n.º de cópias a imprimir e que além disso me escreva em determinada célula o nome da cópia assim:

    Na primeira cópia, na célula A1 que escreva: Original, na 2ª cópia escreva Duplicado, etc..

    Alguém tem ideias ???

    Muito Obrigado

    P.S. Tenho um código que escreve números por extenso, se alguém precisar que diga ;-)

    Sub Imprimir_seleccion()
        Range("A1:L83").Select
        Range("L83").Activate
    'preparar la hoja para la impresión
    With ActiveSheet.PageSetup
        .PrintArea = ""
        .Orientation = xlPortrait 'xlLandscape
        .PaperSize = xlPaperA4 'formato A4
        .BlackAndWhite = True 'incluir colores o no (False o True)
        .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
        .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
        .CenterHorizontally = True 'centrar horizontalmente
        .CenterVertically = False 'centrar verticalmente
    End With
    'imprimir las celdas seleccionadas (1 copia)
    ActiveWindow.selection.PrintOut copies:=1, collate:=True
    End Sub

    Monday, June 12, 2006 4:29 PM

Answers

  •  

    Segue código revisado:

     

    Sub Imprimir_seleccion()
       
    Dim strCopias As String
        Range("A1:L83").Select
        Range("L83").Activate
    'preparar la hoja para la impresión
    With ActiveSheet.PageSetup
        .PrintArea = ""
        .Orientation = xlPortrait 'xlLandscape
        .PaperSize = xlPaperA4 'formato A4
        .BlackAndWhite = True 'incluir colores o no (False o True)
        .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
        .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
        .CenterHorizontally = True 'centrar horizontalmente
        .CenterVertically = False 'centrar verticalmente
    End With

    'aqui vc deve receber o numero de cópias

    strCopias = InputBox("Informe o número de cópias:", "Impressão de documento", 1)

    If IsNumeric(strCopias) = True Then


        'Aqui faz um Loop até a qtd de cópias desejadas

        For i = 1 to strCopias

           If i = 1 Then
                Range("K19").Value = "Original"
            ElseIf i = 2 Then
                Range("K19").Value = "Duplicado" & i - 1
            ElseIf i = 3 Then
                Range("K19").Value = "Triplicado" & i - 1
            ElseIf i = 4 Then
                Range("K19").Value = "Quadruplicado" & i - 1
            Else
               Range("K19").Value = "Cópia n. " & i
            End If

        'imprime a cópia jah com a descrição na célula
            ActiveWindow.selection.PrintOut copies:=1, collate:=True

        Next i

    End If
    End Sub

    Espero ter ajudado....

    Wednesday, June 14, 2006 1:14 PM

All replies

  • Oi Rodrigo,

     

    eu não testei, vê se funciona para ti:

     

    Sub Imprimir_seleccion()
       
    Dim strCopias As String
       
        Range("A1:L83").Select
        Range("L83").Activate
    'preparar la hoja para la impresión
    With ActiveSheet.PageSetup
        .PrintArea = ""
        .Orientation = xlPortrait 'xlLandscape
        .PaperSize = xlPaperA4 'formato A4
        .BlackAndWhite = True 'incluir colores o no (False o True)
        .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
        .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
        .CenterHorizontally = True 'centrar horizontalmente
        .CenterVertically = False 'centrar verticalmente
    End With

    strCopias = InputBox("Informe o número de cópias:", _
    "Impressão de documento", 1)
    If IsNumeric(strCopias) = True Then
        For i = 1 To Int(strCopias)
            If i = 1 Then
                Range("A1").Value = "Original"
            Else
                Range("A1").Value = "Duplicado n." & i - 1
            End If
            'imprimir las celdas seleccionadas (1 copia)
            ActiveWindow.Selection.PrintOut copies:=1, collate:=True
        Next i
    End If
    End Sub

     

    Tuesday, June 13, 2006 12:49 AM
  • Olá Luiz Cláudio,

    Parece que estou mesmo a precisar de um curso de VBA...

    Tentei modificar a sua sugestão de acordo com o que necessito mas parece que tenho por aí um NEXT sem FOR ...

    Alterei como segue mas sem sucesso:

    ...

    strCopias = InputBox("Informe o número de cópias:", _
    "Impressão de documento", 1)
    If IsNumeric(strCopias) = True Then
        For i = 1 To Int(strCopias)
            If i = 1 Then
                Range("K19").Value = "Original"
            Else
                Range("K19").Value = "Duplicado" & i - 1
            If i = 3 Then
                Range("K19").Value = "Triplicado" & i - 1
            Else
                Range("K19").Value = "Quadriplicado" & i - 1
            End If
            'imprimir las celdas seleccionadas (1 copia)
            ActiveWindow.selection.PrintOut copies:=1, collate:=True
        Next i
    End If
    End Sub

    Tuesday, June 13, 2006 9:13 AM
  • Tente assim (no bloco If):


            If i = 1 Then
                Range("K19").Value = "Original"
            ElseIf i=2 Then
                Range("K19").Value = "Duplicado" & i - 1
            ElseIf i = 3 Then
                Range("K19").Value = "Triplicado" & i - 1
            ElseIf i=4 Then
                Range("K19").Value = "Quadruplicado" & i - 1
            Else

               Range("K19").Value="Cópia n. " & i

            End If

    Wednesday, June 14, 2006 2:12 AM
  • Olá Luíz Cláudio,

    Parece que ainda não está a funcionar correctamente, mas está quase lá

    Passo o código todo! ... O que acontece é que Só pede uma unica vez para guardar os dados na Base de Dados, o que está correcto, mas só imprime UMA cópia!!!

    O que quero é que só peça uma unica vez para guardar os dados e que mediante o número de cópias que eu digite imprima esse numero com a descrição diferente em cada uma delas!

    Se digitar 3, que imprima 3 cópias e que na primeira escreva em K19 ORIGINAL, na 2ª cópia que escreva DUPLICADO, na 3ª que escreva TRIPLICADO, e assim sucessivamente! Neste caso julgo não precisar mais do que 4 cópias de cada documento.

    O código:

    Sub Imprimir_seleccion()
       
    Dim strCopias As String
        Range("A1:L83").Select
        Range("L83").Activate
    'preparar la hoja para la impresión
    With ActiveSheet.PageSetup
        .PrintArea = ""
        .Orientation = xlPortrait 'xlLandscape
        .PaperSize = xlPaperA4 'formato A4
        .BlackAndWhite = True 'incluir colores o no (False o True)
        .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
        .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
        .CenterHorizontally = True 'centrar horizontalmente
        .CenterVertically = False 'centrar verticalmente
    End With
           If i = 1 Then
                Range("K19").Value = "Original"
            ElseIf i = 2 Then
                Range("K19").Value = "Duplicado" & i - 1
            ElseIf i = 3 Then
                Range("K19").Value = "Triplicado" & i - 1
            ElseIf i = 4 Then
                Range("K19").Value = "Quadruplicado" & i - 1
            Else
               Range("K19").Value = "Cópia n. " & i
            End If
    strCopias = InputBox("Informe o número de cópias:", _
    "Impressão de documento", 1)
    If IsNumeric(strCopias) = True Then
            'imprimir las celdas seleccionadas (1 copia)
            ActiveWindow.selection.PrintOut copies:=1, collate:=True
    End If
    End Sub

     

    Peço desculpa por toda a maçada! Tem sido uma verdadeira ajuda para mim!

    Wednesday, June 14, 2006 8:50 AM
  •  

    Segue código revisado:

     

    Sub Imprimir_seleccion()
       
    Dim strCopias As String
        Range("A1:L83").Select
        Range("L83").Activate
    'preparar la hoja para la impresión
    With ActiveSheet.PageSetup
        .PrintArea = ""
        .Orientation = xlPortrait 'xlLandscape
        .PaperSize = xlPaperA4 'formato A4
        .BlackAndWhite = True 'incluir colores o no (False o True)
        .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
        .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
        .CenterHorizontally = True 'centrar horizontalmente
        .CenterVertically = False 'centrar verticalmente
    End With

    'aqui vc deve receber o numero de cópias

    strCopias = InputBox("Informe o número de cópias:", "Impressão de documento", 1)

    If IsNumeric(strCopias) = True Then


        'Aqui faz um Loop até a qtd de cópias desejadas

        For i = 1 to strCopias

           If i = 1 Then
                Range("K19").Value = "Original"
            ElseIf i = 2 Then
                Range("K19").Value = "Duplicado" & i - 1
            ElseIf i = 3 Then
                Range("K19").Value = "Triplicado" & i - 1
            ElseIf i = 4 Then
                Range("K19").Value = "Quadruplicado" & i - 1
            Else
               Range("K19").Value = "Cópia n. " & i
            End If

        'imprime a cópia jah com a descrição na célula
            ActiveWindow.selection.PrintOut copies:=1, collate:=True

        Next i

    End If
    End Sub

    Espero ter ajudado....

    Wednesday, June 14, 2006 1:14 PM
  • Muito obrigado

    Era isto mesmo que eu precisáva!

    Quem sabe, sabe

     

    Wednesday, June 14, 2006 2:49 PM
  • Eu respondi só para o Everton Matos mas quero deixar os meus parabéns e sinceros agradecimentos ao Luíz Cláudio que teve uma resposta de sucesso comigo e teve a paciência de me ajudar nesta questão.

    Sem vocês nunca tería conseguido mesmo!

    Muito Obrigado :)

     

    Wednesday, June 14, 2006 2:52 PM
  • Que bom que tenha dado certo...

    Eh bom que o forum começa a dar resultados... Com todos colaborando podemos fazer do forum uma ótima ferramenta de ajuda nas nossas aplicações...

    Salve VBA!!! rsrssr

    Wednesday, June 14, 2006 4:40 PM
  • ehehehe ...

    Creio que este Forum necessita mais divulgação pois encontrei-o quase por acaso.

    A minha folha de Excel não chega a ser uma aplicação! Estáva farto das aplicações de Facturação do mercado  ... algumas são muito boas mas qdo chega a hora de fazer alguma coisa como queremos nunca é a mesma coisa!!

    Decidi avançar com este projecto que é apenas uma folha de Excel como eu quero e pretendo que num futuro venha a funcionar bastante bem.

    Agora ainda tenho a perte de control de estoques ...

    Algém tem ideias ou posso começar a Postar dúvidas ???

    Um abração desde Portugal

    Wednesday, June 14, 2006 5:09 PM