#1
|
|||
|
|||
Save Filename based on Text Field
I have a form template that I have put a command button on to submit via email. I would also like to add to the button to save as a pdf, and to save the filename based on one of the text content controls. Is this possible?
|
#2
|
||||
|
||||
Yes, and it's quite simple, using code like:
Code:
With ActiveDocument .SaveAs2 FileName:="C:\Users\" & Environ("Username") & "\Documents\" & _ .SelectContentControlsByTitle("MyControl")(1).Range.Text & ".PDF", _ FileFormat:=wdFormatPDF End With
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Thanks, it worked perfectly.
What would be the code to email the pdf to a specific address? Also is there a way to have a message pop up and say that your email has been sent? Sorry for all the questions, I am new to VBA. |
#4
|
||||
|
||||
To send the PDF by e-mail using the following code assumes the sender has Outlook.
I have left the code displaying the message requiring the user to send it. You can add the command to send the message if you wish, after .Display (i.e. .Send) but retain .Display: Code:
Sub Send_PDF_As_Attachment() Dim oOutlookApp As Object Dim oItem As Object Dim olInsp As Object Dim strFname As String Dim wdDoc As Document Dim oRng As Range With ActiveDocument strFname = .SaveAs2(Filename:="C:\Users\" & Environ("Username") & "\Documents\" & _ .SelectContentControlsByTitle("MyControl")(1).Range.Text & ".PDF", _ FileFormat:=wdFormatPDF) End With On Error Resume Next 'Get Outlook if it's running Set oOutlookApp = GetObject(, "Outlook.Application") 'Outlook wasn't running, start it from code If Err <> 0 Then Set oOutlookApp = CreateObject("Outlook.Application") End If On Error GoTo 0 'Create a new mailitem Set oItem = oOutlookApp.CreateItem(0) With oItem Set olInsp = .GetInspector Set wdDoc = olInsp.WordEditor Set oRng = wdDoc.Range oRng.Collapse 1 oRng.Text = "This is the message body" .to = "someone@somewhere.com" .Subject = "This is the subject" .BodyFormat = 2 .Attachments.Add strFname .Display End With 'Clean up Set oItem = Nothing Set oOutlookApp = Nothing Set olInsp = Nothing Set wdDoc = Nothing Set oRng = Nothing lbl_Exit: Exit Sub End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
|||
|
|||
Thanks for the quick responds. I put the code in into VBA, but when I press the button nothing happens. If i put the "Private Sub CommandButton1_Click()" on, I get a compiling error: expected end sub. What am I missing?
I really appreciate your help. Code:
Private Sub CommandButton1_Click() Sub Send_PDF_As_Attachment() Dim oOutlookApp As Object Dim oItem As Object Dim olInsp As Object Dim strFname As String Dim wdDoc As Document Dim oRng As Range With ActiveDocument strFname = .SaveAs2(FileName:="C:\Users\" & Environ("Username") & "\Documents\" & _ .SelectContentControlsByTitle("MyControl")(1).Range.Text & ".PDF", _ FileFormat:=wdFormatPDF) End With On Error Resume Next 'Get Outlook if it's running Set oOutlookApp = GetObject(, "Outlook.Application") 'Outlook wasn't running, start it from code If Err <> 0 Then Set oOutlookApp = CreateObject("Outlook.Application") End If On Error GoTo 0 'Create a new mailitem Set oItem = oOutlookApp.CreateItem(0) With oItem Set olInsp = .GetInspector Set wdDoc = olInsp.WordEditor Set oRng = wdDoc.Range oRng.Collapse 1 oRng.Text = "This is the message body" .to = "someone@somewhere.com" .Subject = "This is the subject" .BodyFormat = 2 .Attachments.Add strFname .Display End With 'Clean up Set oItem = Nothing Set oOutlookApp = Nothing Set olInsp = Nothing Set wdDoc = Nothing Set oRng = Nothing lbl_Exit: Exit Sub End Sub End Sub |
#6
|
||||
|
||||
You have embedded a sub within a sub
Private Sub CommandButton1_Click() Sub Send_PDF_As_Attachment() and similarly at the end you have End Sub End Sub Remove one of the End Subs and the line Sub Send_PDF_As_Attachment() and provided the code is associated with the button you should be getting somewhere.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#7
|
|||
|
|||
I now get a error expected function or variable and it highlights saveas2. Could it be that it is an Active X button? I know this is getting annoying for you I appreciate the help.
Code:
Private Sub CommandButton1_Click() Dim oOutlookApp As Object Dim oItem As Object Dim olInsp As Object Dim strFname As String Dim wdDoc As Document Dim oRng As Range With ActiveDocument strFname = .SaveAs2(FileName:="C:\Users\" & Environ("Username") & "\Documents\" & _ .SelectContentControlsByTitle("Title")(1).Range.Text & ".PDF", _ FileFormat:=wdFormatPDF) End With On Error Resume Next 'Get Outlook if it's running Set oOutlookApp = GetObject(, "Outlook.Application") 'Outlook wasn't running, start it from code If Err <> 0 Then Set oOutlookApp = CreateObject("Outlook.Application") End If On Error GoTo 0 'Create a new mailitem Set oItem = oOutlookApp.CreateItem(0) With oItem Set olInsp = .GetInspector Set wdDoc = olInsp.WordEditor Set oRng = wdDoc.Range oRng.Collapse 1 oRng.Text = "This is the message body" .to = "someone@somewhere.com" .Subject = "This is the subject" .BodyFormat = 2 .Attachments.Add strFname .Display End With 'Clean up Set oItem = Nothing Set oOutlookApp = Nothing Set olInsp = Nothing Set wdDoc = Nothing Set oRng = Nothing lbl_Exit: Exit Sub End Sub |
#8
|
||||
|
||||
What does the error message say?
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#9
|
||||
|
||||
The message says Compile Error - expected Function or Variable and highlights SaveAs2.
SaveAs2 incidentally is not available in Word 2007, but the OP says 2013 and in that version the following change doesn't produce the error. Code:
With ActiveDocument strfname = "C:\Users\" & Environ("Username") & "\Documents\" & .SelectContentControlsByTitle("Title")(1).Range.Text & ".PDF" .SaveAs2 Filename:=strfname, FileFormat:=wdFormatPDF End With
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How can I save a Word Document as a PDF file with a merged field filename? | kp2009 | Word VBA | 5 | 08-27-2015 11:45 PM |
Auto update Filename field | Oliver Beirne | Word VBA | 4 | 10-19-2012 03:33 AM |
Macro to populate a text form field based on dropdown selection | koloa | Word | 0 | 10-20-2011 11:52 AM |
Save Filename using Document Text | Knawl | Word | 11 | 10-10-2011 03:00 AM |
Selecting merge field based on whether or not text is present | amym | Mail Merge | 1 | 12-07-2010 05:14 AM |