Usuário com melhor resposta
Exportar pdf

Pergunta
-
Bom dia!
Estou realizando uma macro onde dentro de um loop criei uma condição para que se um campo for verdadeiro me gerar um pdf. utilizei o seguinte código:
Dim caminho As String
Dim nome As String
Sheets("Ordem de Produção").Select
caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Range("C3").Value & "\Lote " & Range("C4").Value
nome_arquivo = Range("C7").Value & " " & Range("c5").Value
On Error Resume Next
MkDir caminho
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho & "\" & nome_arquivo & ".pdf"
Application.ScreenUpdating = TrueEstava sem o suplemento para gerar pdf, porem já o instalei e mesmo assim não consigo gerar, o código roda sem erros mas não gera o pdf. alguém poderia me ajudar?
quinta-feira, 12 de março de 2015 11:13
Respostas
-
Tente qualificar completamente o nome das planilhas:
caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Range("C3").Value & "\Lote " & Range("C4").Value nome_arquivo = Range("C7").Value & " " & Range("c5").Value
por:
caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Worksheets("nome_planilha").Range("C3").Value & "\Lote " & Worksheets("nome_planilha").Range("C4").Value nome_arquivo = Worksheets("nome_planilha").Range("C7").Value & " " & Worksheets("nome_planilha").Range("c5").Value
Ah, e uma dúvida: o seu código chega a gerar algum PDF por VBA ou até agora você não conseguiu gerar nenhum?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 11 de julho de 2015 17:12
quarta-feira, 18 de março de 2015 13:48Moderador
Todas as Respostas
-
Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.
---
Sobre sua dúvida, você pode estar tendo um erro no método ExportAsFixedFormat, mas a instrução On Error Resume Next não notifica o erro:
Sub Main() Dim caminho As String Dim nome As String Sheets("Ordem de Produção").Select caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Range("C3").Value & "\Lote " & Range("C4").Value nome_arquivo = Range("C7").Value & " " & Range("c5").Value On Error Resume Next MkDir caminho On Error GoTo 0 MsgBox "O arquivo será salvo em: " & caminho & "\" & nome_arquivo & ".pdf", vbInformation ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho & "\" & nome_arquivo & ".pdf" Application.ScreenUpdating = True End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
quinta-feira, 12 de março de 2015 12:21Moderador -
Felipe, bom dia!
Obrigado pelas informações!
Agora esta dando erro, veja o erro que aparece:
Poderia me ajudar?
quinta-feira, 12 de março de 2015 12:55 -
O caminho que aparece na caixa de mensagem antes de salvar é válido?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
quinta-feira, 12 de março de 2015 13:13Moderador -
Sim! Esse é o caminho que desejo salvar o arquivo!quinta-feira, 12 de março de 2015 13:15
-
Não entendo por que não funciona para você. Pra mim, está funcionando normal.
Você tem o Excel 2007 com o Service Pack 2 instalado ou o 2010, 2013?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
quinta-feira, 12 de março de 2015 13:36Moderador -
Felipe, uso aqui o Windows 7 com o Service Pack 1, meu Excel é o 2007, o erro pode estar relacionado a alguma dessas configurações?quinta-feira, 12 de março de 2015 13:53
-
Felipe, surgiu uma nova questão!
Se continuo a executar a macro ela gera os PDFs porem meu loop perde o controle e foge os parâmetros que determinei. Segue código para que você analise:
Private Sub CommandButton1_Click() Sheets("plan2").Select Range("J11:P80").Select Selection.ClearContents Sheets("plan2").Select Range("j2").Value = ComboBox1.Value Sheets("Ordem de Produção").Select Range("C6").Value = ComboBox2.Value 'repetindo operações por material Sheets("Plan1").Select Do Until ActiveCell.Select = "" Sheets("Plan1").Select ActiveCell.Offset(1, 0).Select ActiveCell.Copy Sheets("plan2").Select Range("o2").PasteSpecial xlPasteValues Sheets("plan3").Select Do Until ActiveCell = "" Sheets("plan3").Select ActiveCell.Offset(1, 0).Select ActiveCell.Copy Sheets("plan2").Select Range("p2").PasteSpecial xlPasteValues Range("A1:G2586").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _ ("Plan2!Criteria"), CopyToRange:=Range("Plan2!Extract"), Unique:=False If Range("J11").Value <> "" Then Sheets("Ordem de Produção").Select Range("b8").Select Sheets("plan2").Select Range("l10").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select ActiveCell.Copy Sheets("Ordem de Produção").Select ActiveCell.Offset(1, 0).Select ActiveCell.PasteSpecial xlPasteValues Sheets("plan2").Select ActiveCell.Offset(0, 3).Select ActiveCell.Copy Sheets("Ordem de Produção").Select ActiveCell.Offset(0, 1).Select ActiveCell.PasteSpecial xlPasteValues ActiveCell.Offset(0, -1).Select Sheets("plan2").Select ActiveCell.Offset(0, -3).Select Loop Sheets("Ordem de Produção").Select caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Range("C3").Value & "\Lote " & Range("C4").Value nome_arquivo = Range("C7").Value & " " & Range("c5").Value On Error Resume Next MkDir caminho On Error GoTo 0 MsgBox "O arquivo será salvo em: " & caminho & "\" & nome_arquivo & ".pdf", vbInformation ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho & "\" & nome_arquivo & ".pdf" Application.ScreenUpdating = True Sheets("Ordem de Produção").Select Range("b9:c25").Select Selection.ClearContents End If Loop Sheets("plan2").Select If Range("P2").Value = "" Then Sheets("Plan3").Select Range("d1").Select End If Loop End Sub
Conto com a ajuda!
quinta-feira, 12 de março de 2015 15:01 -
Eu gostaria de saber o Service Pack do seu Office, e não do Windows.
A saber: o último SP do Office 2007 é o SP3, e você só consegue gerar PDF com o SP2 ou SP3.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
quinta-feira, 12 de março de 2015 16:39Moderador -
Felipe bom dia!
O SP3 esta instalado!
Esta acontecendo o seguinte erro tenho uma lista de materiais e uma de operações a macro verifica se aquele material passa por aquela operação caso sim deve me gerar um pdf!
O que esta ocorrendo é que a macro para o primeiro material selecionado não gera o pdf.
sexta-feira, 13 de março de 2015 11:20 -
"O que esta ocorrendo é que a macro para o primeiro material selecionado não gera o pdf."
Para os outros materiais, o PDF é gerado normalmente? Poste o código utilizado aqui, pode ser que necessite apenas um ajuste de linha inicial do laço.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
segunda-feira, 16 de março de 2015 12:10Moderador -
Bom dia Felipe!
Segue código que estou utilizando:
Private Sub CommandButton1_Click() Application.ScreenUpdating = False Sheets("plan2").Select Range("J11:P80").Select Selection.ClearContents Sheets("plan2").Select Range("j2").Value = ComboBox1.Value Range("P2").Value = ComboBox3.Value Sheets("Ordem de Produção").Select Range("C6").Value = ComboBox2.Value Range("C7").Value = ComboBox3.Value Range("C3").Value = ComboBox1.Value 'repetindo operações por material Sheets("Plan1").Select Do Until ActiveCell.Select = "" Sheets("plan2").Select Range("J11:P80").Select Selection.ClearContents Sheets("Plan1").Select ActiveCell.Offset(1, 0).Select If ActiveCell = "" Then Exit Do Else ActiveCell.Copy Sheets("plan2").Select Range("o2").PasteSpecial xlPasteValues Range("A1:G2586").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _ ("Plan2!Criteria"), CopyToRange:=Range("Plan2!Extract"), Unique:=False Sheets("Ordem de Produção").Select Range("b8").Select Sheets("plan2").Select Range("l10").Select Do Until ActiveCell = "" ActiveCell.Offset(1, 0).Select If ActiveCell <> "" Then ActiveCell.Copy Sheets("Ordem de Produção").Select ActiveCell.Offset(1, 0).Select ActiveCell.PasteSpecial xlPasteValues Sheets("plan2").Select ActiveCell.Offset(0, 3).Select ActiveCell.Copy Sheets("Ordem de Produção").Select ActiveCell.Offset(0, 1).Select ActiveCell.PasteSpecial xlPasteValues ActiveCell.Offset(0, -1).Select Sheets("plan2").Select ActiveCell.Offset(0, -3).Select End If Loop End If Sheets("Ordem de Produção").Select If Range("b9").Value <> "" Then caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Range("C3").Value & "\Lote " & Range("C4").Value nome_arquivo = Range("C7").Value & " " & Range("c5").Value On Error Resume Next MkDir caminho On Error GoTo 0 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=caminho & "\" & nome_arquivo & ".pdf" Application.ScreenUpdating = True Range("A1:N50").Select Selection.PrintOut From:=1, To:=2, Copies:=1, Preview:=False End If Sheets("Ordem de Produção").Select Range("b9:c25").Select Selection.ClearContents Loop Sheets("plan4").Select ActiveSheet.ShowAllData Sheets("plan1").Select Range("A2:A200").Select Selection.ClearContents Sheets("plan2").Select Range("J2:P2, J11:P50").Select Selection.ClearContents Sheets("ordem de produção").Select Range("b9:c25").Select Selection.ClearContents Sheets("plan1").Visible = False Sheets("plan2").Visible = False Sheets("plan3").Visible = False Sheets("plan4").Visible = False Application.ScreenUpdating = True UserForm1.Hide End Sub
quarta-feira, 18 de março de 2015 10:47 -
Tente qualificar completamente o nome das planilhas:
caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Range("C3").Value & "\Lote " & Range("C4").Value nome_arquivo = Range("C7").Value & " " & Range("c5").Value
por:
caminho = "G:\ADM FABRICA\PCP\ORDENS DE PRODUÇÂO\" & Worksheets("nome_planilha").Range("C3").Value & "\Lote " & Worksheets("nome_planilha").Range("C4").Value nome_arquivo = Worksheets("nome_planilha").Range("C7").Value & " " & Worksheets("nome_planilha").Range("c5").Value
Ah, e uma dúvida: o seu código chega a gerar algum PDF por VBA ou até agora você não conseguiu gerar nenhum?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 11 de julho de 2015 17:12
quarta-feira, 18 de março de 2015 13:48Moderador -
Felipe,
Muito obrigado, com sua correção no código os PDF's estão sendo gerados normalmente!
Att.
quarta-feira, 18 de março de 2015 17:04