Forms MS Word 2013表单,使用宏创建另存为和提交按钮
我在Word 2013中有一个简单的表单(来自模板),并有一个“提交”按钮,该按钮将:Forms MS Word 2013表单,使用宏创建另存为和提交按钮,forms,vba,ms-word,save-as,Forms,Vba,Ms Word,Save As,我在Word 2013中有一个简单的表单(来自模板),并有一个“提交”按钮,该按钮将: 1.从文档中的字段收集信息,命名文档并另存为。 2.通过电子邮件将表单发送到预设的电子邮件地址 多人将从模板中打开一个文档 Private Sub CommandButton21_Click() Dim OL As Object Dim EmailItem As Object Dim Doc As Document Dim strTagNum As
1.从文档中的字段收集信息,命名文档并另存为。
2.通过电子邮件将表单发送到预设的电子邮件地址 多人将从模板中打开一个文档
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 = "john.doe@example.com"
.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上的尼尔·马莱克)而这个话题
我的问题是:
1.如何为saveAs指定文件路径?宏中有代码,但文档保存在单个用户的文档文件夹中
感谢您的时间。多亏了这个有用的链接,我能够挖掘更多信息并解决问题的最后一部分: 我最后引用了附加了&“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 = "john.doe@example.com; onsiteengr@example.com; chrip@example.com"
.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
感谢所有看过的人,感谢他们提供了有用的代码和评论 所以你不想另存为模板?那么您希望保存为哪种类型的文件?模板将位于中心位置,许多用户将从中打开Document1.docx。我希望Document1.docx保存为特定位置,文件名取自表单。您需要保存它,包括路径:
Doc.SaveAs2 StrPath&“\”&strFilename
。最好事先检查文件夹StrPath是否存在。也可以考虑一些UNC路径,而不是<代码> v:<代码> > <代码> \FieleServNas\Debug \/Calp>或<代码> \YouWorkDeave.COM\DFSRooS\Stuto\Debug \/Cord>。或者,添加CustomDocumentProperties来存储此路径。这对包含该路径很有效,谢谢!我很想使用UNC路径,但是对于这个应用程序,公司并没有这样设置。