Notifications
Clear all

Confirmar impressao

16 Posts
4 Usuários
0 Reactions
1,570 Visualizações
(@mprudencio)
Posts: 0
New Member
Topic starter
 

Inseri em um codigo uma confirmação de impressao

Algo assim

sub imprimir
Dim resposta as string

for a = xxxx

 Resposta = MsgBox("Deseja Imprimir o documento", vbYesNo, "Imprimindo documento")

        If Resposta = vbYes Then


'Imprime documento

else

'Salva em pdf

End if

next  a

Meu problema essa confirmação esta dentro de um loop e assim ele se repete dezenas de vezes

Alguma solução que nao seja chamar a rotina em separado.

A ideia é nao ter que escrever duas rotinas.

 
Postado : 20/02/2016 10:06 pm
(@fcarlosc)
Posts: 0
New Member
 
Sub imprimir()
Dim resposta As String

For a = 1 To 1

resposta = MsgBox("Deseja Imprimir o documento", vbYesNo, "Imprimindo documento")

If resposta = vbYes Then

'Imprime documento

Sheets("Base de dados").Select
Range("A1:D5").Select
Selection.PrintOut Copies:=1, Collate:=True

Else

'Salva em pdf

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:TesteTeste.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End If

Next a

End Sub
 
Postado : 20/02/2016 10:40 pm
(@mprudencio)
Posts: 0
New Member
Topic starter
 

fcarlos sua rotina não resolveu, eu já tenho a rotina que gera o pdf e a impressão, esse não é o problema meu problema é que a msgbox se repete a cada ciclo eu quero apenas uma confirmação em 50 ciclos do loop.

Acho que não da pra fazer sem reescrever a rotina e chamar o código através de uma terceira.

 
Postado : 21/02/2016 8:07 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Marcelo, veja se ajuda.

Sub imprimir()
 Dim a As Long
  For a = 1 To 200
   If a Mod 50 = 0 Then
    If MsgBox("Deseja Imprimir o documento", vbYesNo, "Imprimindo documento") = _
     vbYes Then MsgBox "imprimindo" 'Imprime documento
   Else
    'Salva em pdf
   End If
  Next a
End Sub
 
Postado : 21/02/2016 8:44 am
(@fcarlosc)
Posts: 0
New Member
 

Tenta esse.
Sub imprimir()

ncop = InputBox("Informe a quantidade de cópias")
If ncop = "" Or ncop = "0" Then
'MsgBox ("Impressão Cancelada !")
Exit Sub
End If

Application.ScreenUpdating = True
Range("A1").Select
Application.ScreenUpdating = False
ActiveWindow.SelectedSheets.PrintOut Copies:=ncop

End Sub

 
Postado : 21/02/2016 8:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fiquei em duvida quanto ao Loop que cita, se a intenção é a impressão da quantidade de cópias ou o loop se refere a qde de documentos, ou seja seriam 50 documentos diferentes e não cópias de um só.

 
Postado : 21/02/2016 9:25 am
(@mprudencio)
Posts: 0
New Member
Topic starter
 

Osvaldo e fccarlos vou testar ambas.

Mas nem sempre sei a quantidade de dados a serem impressos por assim dizer posso ter 50, 20 ou 300

Mauro tenho uma lista de nomes e para cada nome é criado um arquivo pdf ou neste caso a impressão do novo arquivo gerado.

Meu problema é que a cada nome o usuário é perguntado se deseja imprimir.

Talvez eu esteja reinventando a roda, mas não queria escrever duas rotinas uma para impressão e outra para os pdfs.

Mas acho que não tem outro jeito.

 
Postado : 21/02/2016 10:16 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Meu problema é que a cada nome o usuário é perguntado se deseja imprimir.

Talvez eu esteja reinventando a roda, mas não queria escrever duas rotinas uma para impressão e outra para os pdfs.

Uma possibilidade seria criar ao lado de cada nome uma instrução para que o código gere pdf, imprima ou gere pdf e imprima referente ao nome. Isto dispensa o uso da MsgBox.

Exemplo: considerando os nomes na coluna 'A', coloque na 'B':
1 >> imprime
2 >> gera pdf
3 >> imprime e gera pdf

 
Postado : 21/02/2016 11:13 am
(@mprudencio)
Posts: 0
New Member
Topic starter
 

Não entendi

 
Postado : 21/02/2016 11:17 am
(@fcarlosc)
Posts: 0
New Member
 

Acho que a ideia que ele passou, seria meio que criar um "UserForm" com "OptionButton". Um para cada esquema: imprimi, gerar pdf, e os 2.

 
Postado : 21/02/2016 11:28 am
(@mprudencio)
Posts: 0
New Member
Topic starter
 

Um dos códigos que estou tentando adaptar é esse

Sub Empresa()

Dim WL As Worksheet
Dim WCHK As Worksheet
Dim WM As Worksheet
Dim WSNOME As Worksheet
Dim SNOME As String
Dim I As Long
Dim J As Long
Dim WCHKLinha As Long
Dim WCHKUlinha As Long
Dim WSNOMELinha As Long
Dim WLULINHA As Long
Dim WLLINHA As Long
Dim WSNOMEULINHA As Long
Dim Resposta As String

Set WL = Sheets("Listas")
Set WCHK = Sheets("Check List")
Set WM = Sheets("Modelo")
WM.Visible = xlSheetVisible
WCHKLinha = 5
WLLINHA = 2
WCHKUlinha = WCHK.Range("A" & Rows.Count).End(xlUp).Row
WLULINHA = WL.Range("A" & Rows.Count).End(xlUp).Row

For I = WLLINHA To WLULINHA

SNOME = WL.Cells(WLLINHA, 1).Value
WM.Copy After:=Sheets(Sheets.Count)
Set WSNOME = Sheets("Modelo (2)")
For J = WCHKLinha To WCHKUlinha

If WCHK.Cells(WCHKLinha, 6).Value = SNOME Then

WSNOMEULINHA = WSNOME.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row

WSNOME.Cells(WSNOMEULINHA, 1).Value = WCHK.Cells(WCHKLinha, 1).Value
WSNOME.Cells(WSNOMEULINHA, 2).Value = WCHK.Cells(WCHKLinha, 2).Value
WSNOME.Cells(WSNOMEULINHA, 3).Value = WCHK.Cells(WCHKLinha, 3).Value
WSNOME.Cells(WSNOMEULINHA, 4).Value = WCHK.Cells(WCHKLinha, 4).Value
WSNOME.Cells(WSNOMEULINHA, 5).Value = WCHK.Cells(WCHKLinha, 5).Value
WSNOME.Cells(WSNOMEULINHA, 6).Value = WCHK.Cells(WCHKLinha, 6).Value
WSNOME.Cells(WSNOMEULINHA, 7).Value = WCHK.Cells(WCHKLinha, 7).Value
WSNOME.Cells(WSNOMEULINHA, 8).Value = WCHK.Cells(WCHKLinha, 8).Value
WSNOME.Cells(WSNOMEULINHA, 9).Value = WCHK.Cells(WCHKLinha, 9).Value
WSNOME.Cells(WSNOMEULINHA, 10).Value = WCHK.Cells(WCHKLinha, 10).Value

End If

WCHKLinha = WCHKLinha + 1

Next

Resposta = MsgBox("Deseja Imprimir o Arquivo", vbYesNo, "Imprimindo Documentos")

If Resposta = vbYes Then

ActiveSheet.PrintOut

Else

ActiveSheet.Name = SNOME
WLLINHA = WLLINHA + 1
WCHKLinha = 2

End If

Next

WM.Visible = xlSheetVeryHidden

WCHK.Select

End Sub

Esse cria varias abas mas ao invés de criar as abas já que são impressas depois pq não fazer direto no primeiro código.

 
Postado : 21/02/2016 11:37 am
(@osvaldomp)
Posts: 857
Prominent Member
 

xxxxxxxxAxxxxxxxxxxxxxxxxxxxB
1xxxxxJoséxxxxxxxxxxxxxxxxxx1
2xxxxxMariaxxxxxxxxxxxxxxxxx3
3xxxxxUóchitoxxxxxxxxxxxxxxx2
4xxxxxWanderkleyssonxxxxxxx2
5xxxxxAnaxxxxxxxxxxxxxxxxxx1

Sub ImprimeV2()
 Dim Nome As Range
  For Each Nome In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
   If Nome.Offset(, 1).Value = 1 Then
    'Imprime
   ElseIf Nome.Offset(, 1).Value = 2 Then
    'gera pdf
   ElseIf Nome.Offset(, 1).Value = 3 Then
    'imprime e gera pdf (ou gera pdf e imprime)
   End If
  Next Nome
End Sub
 
Postado : 21/02/2016 11:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Acredito que a sugestão do Osvaldo servirá ao que quer, apesar que se entendi corretamente, se todos os arquivos teem de ser impresso, é só tirar a mensagem solicitando.

 
Postado : 21/02/2016 1:20 pm
(@mprudencio)
Posts: 0
New Member
Topic starter
 

Não consegui adaptar o código do Osvaldo

E preciso ter a opção de escolha imprimir ou salvar em pdf

E não gostaria de usar duas rotinas para isso, mas enfim pelo jeito não vai acontecer.

Como eu disse estou já estou acho que estou reinventando a roda.

 
Postado : 21/02/2016 2:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não consegui adaptar o código do Osvaldo

E preciso ter a opção de escolha imprimir ou salvar em pdf

E não gostaria de usar duas rotinas para isso, mas enfim pelo jeito não vai acontecer.

Como eu disse estou já estou acho que estou reinventando a roda.

Acho que não vai ter como fazer, uma vez que você está afirmando : "E preciso ter a opção de escolha imprimir ou salvar em pdf", ou seja, se vai ser uma opção de escolha, tem de haver o questionamento e resposta, não tem como deixar direto, a não ser da forma que o osvaldo citou, ja definir as opções nas celulas.

 
Postado : 21/02/2016 8:05 pm
Página 1 / 2