2017-02-14 91 views
2

У меня есть простая форма (из шаблона) в Word 2013 и есть кнопка «Отправить», которая будет:
1. Соберите информацию из полей в документ, название документа и saveAs.
2. Отправьте по электронной почте форму для предопределения адресов электронной почты.Форма MS Word 2013, создайте кнопку «Сохранить как» и «Отправить» с макросом

Несколько человек будет открыть документ из шаблона

Private Sub CommandButton21_Click() 
Dim OL    As Object 
Dim EmailItem  As Object 
Dim Doc    As Document 
Dim strTagNum As String, strNTID As String, strDate As String 

strTagNum = ActiveDocument.SelectContentControlsByTitle("TagNum")(1).Range.Text 
strNTID = ActiveDocument.SelectContentControlsByTitle("NTID")(1).Range.Text 
strDate = ActiveDocument.SelectContentControlsByTitle("Date")(1).Range.Text 
Dim strFilename As String 
strFilename = strTagNum & "_" & strNTID & "_" & Format(strDate, "ddmmyyyy") & ".docx" 
StrPath = "V:\OPS\Central\Shared\ARM\ALERT" 

Application.ScreenUpdating = False 
Set OL = CreateObject("Outlook.Application") 
Set EmailItem = OL.CreateItem(olMailItem) 
Set Doc = ActiveDocument 

Doc.SaveAs2 strFilename 


With EmailItem 
.Subject = "CGF ARM - ALERT ADD/DROP/CHANGE" 
.Body = "Please Review this Alert for Continuous Improvement" 
.To = "[email protected]" 
.Importance = olImportanceNormal 
.Attachments.Add Doc.FullName 
.Send 
End With 

Application.ScreenUpdating = True 

MsgBox "Alert Record Submitted" 

Set Doc = Nothing 
Set OL = Nothing 
Set EmailItem = Nothing 


End Sub 

(Кредит Нил Малек на knacktraining.com)
и эту тему
Microsoft Word 2013 macro save file name from form content

Мои вопросы:
1. Как указать путь к файлу saveAs? У меня есть код в Макро, но документ сохраняется в папке «Документы отдельных пользователей».

  1. Как я могу сказать Макро, чтобы вытащить имя пользователя из формы и отправить его «имя пользователя» @ example.com?

Остальная часть макроса работает, когда нажата кнопка «Отправить», документ переименовывается, сохраняется и отправляется в виде электронной почты для предопределенных адресов электронной почты.

Я обновил это из оригинального вопроса, я смог ответить на некоторые из моих предыдущих вопросов путем проб и ошибок.

Спасибо за ваше время.

+0

Значит, вы не хотите сохранять как шаблон? то какой файл типа вы хотите сохранить? – 0m3r

+0

Шаблон будет центральным, и многие пользователи откроют ему Document1.docx. Я хотел бы, чтобы Document1.docx сохранялся как в определенном месте с именем файла, взятым из формы. – ThunderJ

+0

Вам нужно сохранить его, включая путь: 'Doc.SaveAs2 StrPath &" \ "& strFilename'. Лучше проверить, существует ли папка * StrPath * заранее. Также рассмотрите несколько UNC-путей вместо 'V:' как '\\ FileServerNAS \ Documents \' или '\\ YourWorkDomain.com \ DFSroot \ Site \ Documents \'. Кроме того, добавьте * CustomDocumentProperties *, чтобы сохранить этот путь. – PatricK

ответ

0

я смог выкопать немного и решить последнюю часть моего вопроса, благодаря этой полезной ссылке:

excel: reference cell value to get email recipient for selected row?

я оказался ссылками на значении поля прилагаемое с & «example.com» и затем .CC струна, работала как шарм!

Вот код в целом, я очень неглубокий пользователь vba, поэтому я уверен, что есть более чистые способы, но это, похоже, работает для того, что мне нужно.

Private Sub CommandButton21_Click() 
Dim OL    As Object 
Dim EmailItem  As Object 
Dim Doc    As Document 
Dim strTagNum As String, strNTID As String, strDate As String 

strTagNum = ActiveDocument.SelectContentControlsByTitle("TagNum")(1).Range.Text 
strNTID = ActiveDocument.SelectContentControlsByTitle("NTID")(1).Range.Text 
strDate = ActiveDocument.SelectContentControlsByTitle("Date")(1).Range.Text 
Dim strFilename As String 
strFilename = strTagNum & "_" & strNTID & "_" & Format(strDate, "ddmmyyyy") & ".docx" 
Email_Send_To = strNTID & "@example.com" 

Application.ScreenUpdating = False 
Set OL = CreateObject("Outlook.Application") 
Set EmailItem = OL.CreateItem(olMailItem) 
Set Doc = ActiveDocument 

Doc.SaveAs2 StrPath & "V:\Central\Shared\ARM\ALERT\SubmittedForms\" & strFilename 


With EmailItem 
.Subject = "Continuous Improvement" 
.Body = "Please Review this Alert for Continuous Improvement" 
.To = "[email protected]; [email protected]; [email protected]" 
.CC = Email_Send_To 
.Importance = olImportanceNormal 
.Attachments.Add Doc.FullName 
.Send 
End With 

Application.ScreenUpdating = True 

MsgBox "Alert Record Submitted" 

Set Doc = Nothing 
Set OL = Nothing 
Set EmailItem = Nothing 


End Sub 

Спасибо всем, кто посмотрел и полезный код и комментарии!