Notifications
Clear all

Macro salva em pdf com a data atual

5 Posts
2 Usuários
0 Reactions
4,112 Visualizações
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Bom dia!

Criei uma macro que salva minha planilha em pdf com um nome especifico, porém eu queria, mudar o nome de salvamento do arquivo. exemplificando, minha macro salva o arquivo com o nome PASTA.PDF, minha intenção é de salvar com o nome da data de salvamento, tipo assim, 09/11/2012 08:00.pdf, ou seja a data mudaria em função do dia e hora em que está sendo salvo. Estou enviando em anexo o modelo que estou usando.
obrigado!

 
Postado : 09/11/2012 7:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Primeiro tenha em mente que um nome de arquivo não pode ter os caracteres ", /,:,?,*,",<,>,|", então vc deve formatar datas sem barras e horas sem dois pontos.
Segue abaixo uma possibilidade, adapte-a a sua vontade:

Sub SalvaPDF()
Dim Pasta As String, MyPath As String
'Aqui o diretorio onde será salvo
MyPath = "C:Temp" 'Indica em que local a pasta estará , pode ser C: ou d: ou e:....
'Aqui determina em qual pasta ira ser salvo o arquivo
Pasta = ActiveSheet.Range("P1").Value
'Aqui determina o nome que o arquivo terá
arq = Pasta & "_" & ActiveSheet.Range("P2").Value & ActiveSheet.Range("P3").Value _
& " " & Format(Date, "dd-mmm-yyyy") & " " & Format(Time, "HH-MM-SS") & ".pdf"

'Verifica se o diretorio e pasta especificados existe
If (Dir(MyPath & "" & Pasta, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"
' se não existir, cria se quiser
 MkDir (MyPath & Pasta)
End If
'Verifica se o arquivo já existe, se existir, deleta
'If (Dir(Arquivo) <> "") Then
' Kill Arquivo
'End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyPath & "" & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True

End Sub
 
Postado : 09/11/2012 7:48 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Reinaldo, obrigado

Tentei adptar o código a minha necessidade, porém esta aparecendo erro de variável não definida "ARQ". estou eviando o código que adaptei. Desde já informo que o código abaixo funciona da seguinte maneira: tenho um listview que joga os dados para minha planilha e depois gera o arquivo pdf. essa é a lógica do código abaixo, porém não está funcionando.

Private Sub cmdPdf_Click()
On Error Resume Next
Dim i As Long
Dim Pasta As String, MyPath As String

Worksheets("PlanPrintPreAti").Activate
Range("A8:D5000").ClearContents

If Me.lstv.ListItems.Count <= 0 Then

Me.cmdPdf.Enabled = False
Else

Me.cmdPdf.Enabled = True

If MsgBox("Deseja Gerar Arquivo PDF?", vbQuestion + vbYesNo, "Confirmação") = vbYes Then
'Exporta dados para a PlanPrint
For i = 1 To Me.lstv.ListItems.Count
With PlanPrintPreAti.Range("a65000").End(xlUp)
.Offset(1, 0) = Format(lstv.ListItems(i), "0") ' Codigo
.Offset(1, 1) = lstv.ListItems(i).ListSubItems(1) ' estrutura
.Offset(1, 2) = lstv.ListItems(i).ListSubItems(2) 'Serviço
.Offset(1, 3) = lstv.ListItems(i).ListSubItems(3) 'Serviço

End With
Next

With PlanPrintPreAti

'Aqui o diretorio onde será salvo
MyPath = "W:DEPM_GERALDVTSRilton" 'Indica em que local a pasta estará , pode ser C: ou d: ou e:....
'Aqui determina em qual pasta ira ser salvo o arquivo
Pasta = ActiveSheet.Range("PlanPrintPreAti").Value
'Aqui determina o nome que o arquivo terá
arq = Pasta & "_" & ActiveSheet.Range("P2").Value & ActiveSheet.Range("P3").Value _
& " " & Format(Date, "dd-mmm-yyyy") & " " & Format(Time, "HH-MM-SS") & ".pdf"

'Verifica se o diretorio e pasta especificados existe
If (Dir(MyPath & "" & Pasta, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"
' se não existir, cria se quiser
MkDir (MyPath & Pasta)
End If
'Verifica se o arquivo já existe, se existir, deleta
'If (Dir(Arquivo) <> "") Then
' Kill Arquivo
'End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyPath & "" & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True

End With
End If
End If
End Sub

 
Postado : 09/11/2012 8:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Rilton,
Qto ao erro mencionado, muito provavelmente seu codigo está com "Option Explicit", o que obriga a que todas as variaveis sejam declaradas, e no exemplo que enviei não está declarada a variavel "Arq", então inclua-a

Dim Pasta As String, MyPath As String, Arq As String

Qto ao codigo, aparentemente está ok, mas comentario:
a Variavel:
Mypath é para indicar o diretorio e drive geral de uso para salvar o relatorio.
Pasta é para indicar uma sub pasta em um diretorio, se não for essa a sua intenção/necessidade a mesma pode/deve ser descartada ou ter sua utilização alterada
Arq é para definir o nome do arquivo; no exemplo que postei estava "pegando" o nome do arquivo na planilha (Celulas P2 e P3), não sei se irá utilizar essa situação, ou apenas data e hora
então poderia ser Arq= Format(Date, "dd-mmm-yyyy") & " " & Format(Time, "HH-MM-SS") & ".pdf"

 
Postado : 09/11/2012 9:19 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Obrigado Reinaldo,

Funcionou perfeitamente!

 
Postado : 09/11/2012 10:13 am