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.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
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
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.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
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
Osvaldo
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
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ó.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
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.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
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
Osvaldo
Não entendi
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
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.
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 StringSet 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).RowFor 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 WCHKUlinhaIf 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).ValueEnd 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 = 2End 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.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
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
Osvaldo
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.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
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.
Marcelo Prudencio
"Começar já é a metade do caminho."
Autor Desconhecido
Simplifica que simples fica.
Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.
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.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel