Going a bit crazy on this one. Not sure why this code isn't working. My PDF file is saving but its saving to my Documents folder instead of the directed file. It needs to go into this file to save the documentation and I have another code to send an email and attach this file from this directory as well.
Sub PrintPOPDFtoFolder()
ChDir "R:\Procurement\Purchase Orders" & "\" 'files directory
fileSaveName = ActiveSheet.Range("Q7") 'Name the PDF file
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
fileSaveName _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
MsgBox "File Saved " & " " & fileSaveName
End Sub
Instead of relying on ChDir, use the full filepath in the ExportAsFixedFormat call:
fileSaveName = "R:\Procurement\Purchase Orders\" & ActiveSheet.Range("Q7").Value
Related
The following code successfully saves an excel sheet as PDF. I would like to save it as a file, that can be opened by everyone, but not edited with the "fill and sign" feature, that is provided by Adobe Acrobat Reader DC. I have tried to simply add the following, but that does not work:
Attributes:=vbReadOnly
Here is the rest of the code:
Dim sPath As String
sPath = "O:\"
With Worksheets("Sheet 1")
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sPath & UserForm.TextBox1.Value & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
You should be able to use SetAttr after saving.
SetAttr "c:\path\yourfilename.pdf", vbReadOnly
I know how to save the Excel file as a PDF in VBA but was told that this is not sufficient for when sending the Excel file to another person. I will have to save it as a PDF in the same directory as the Excel sheet itself.
How does this work? I don't even know where to begin.
Sub SaveAsPdf()
File_name = ActiveWorkbook.Name
If InStr(Filename, ".") > 0 Then
Filename = Left(Filename, InStrRev(Filename, ".") - 1)
End If
File_name = ActiveWorkbook.Path & Filename & ".pdf"
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=File_name, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
I have wrote a code to print excel file to .PDF file with the page setups parameters.And also it eliminates the need of having a prompt dialog box also.
But I need to know if I need to name the .PDF file as same as the excel file name with below code but not the same destination path.As an example:= if excel file name is "Quality Report 1411185623689" This file is generated by a system therefore its name is changed everyday.
How do I solve this?
Sub Save_As_PDF()
With ActiveSheet.PageSetup
.Orientation=xlLandscape
.Zoom=16
End With
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:="C\:Desktop\Reports\Same as excel file name", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Exit Sub
Untested, but assuming you want to name the PDF the same as the Excel file (ignoring file extension), but in a different folder (say some folder/directory called "C\:Desktop\Reports\" for example):
Option explicit
Sub SaveAsPDF()
Dim folderPath as string
folderPath = "C\:Desktop\Reports\" ' Change to whatever folder, but make sure it ends with a \
If len(dir$(folderPath, vbDirectory)) = 0 then
Msgbox("'" & folderPath & "' is not a valid/existing directory. Abandoning export. Code will stop running now.")
Exit sub
End if
Dim Filename as string
Filename = left$(Thisworkbook.name, instrrev(Thisworkbook.name, ".", -1, vbbinarycompare) -1) & ".pdf"
With ActiveSheet.PageSetup
.Orientation=xlLandscape
.Zoom=16
End With
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=folderPath & filename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Exit Sub
I can't figure out how to prompt the user for a folder path and the save name. Below is the code I have gotten to work.
Sub PrintToPDF
ThisWorkbook.Sheets("Sheet 1","Sheet 3").Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePdf, _
Filename:="test.pdf",
Quality:=xlQualityStandard, _
IncludeDocumentProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Sheets("Sheet 1").Select
End Sub
Thanks for the help!
The code below will prompt the user to select a location and filename to save the pdf as.
Dim file_name As Variant
file_name = Application.GetSaveAsFilename(FileFilter:="Adobe PDF File_ (*.pdf), *.pdf")
If file_name <> False Then
ActiveWorkbook.SaveAs Filename:=file_name
MsgBox "File Saved!"
End If
I use the following macro to create a PDF file from my Excel spreadsheet:
Sub PDF_01()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & "test.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
This macro works fine so far. However, once I have created the file "test.pdf" and I run the macro again it will overwrite the first file without giving any warning message such as "The filename already exists. Do you want to overwrite it?".
Do you know how I can include this message in my code?
You can use Dir to see if the file already exists and then give the user an alternative choice, i.e
Dim StrIn As String
StrIn = ThisWorkbook.Path & "\" & "test.pdf"
If Len(Dir(StrIn)) = 0 Then
ActiveSheet.ExportAsFixedFormat xlTypePDF, Filename:=StrIn, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "file already exists"
' do something else
End If