2017-02-14 6 views
2

Word 2013で簡単なフォーム(テンプレートから)を「Submit」ボタンがあります。
1.文書に名前をつけ、文書を保存してください。
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. フォームからユーザー名を取得して「username」@ example.comに送信する方法をマクロに伝えるにはどうすればよいですか?

残りのマクロは、[送信]ボタンを押すと、名前が変更され、保存され、事前設定された電子メールアドレスに電子メールとして送信されます。

私は元の質問からこれを更新しました。試行錯誤して私の以前の質問のいくつかに答えることができました。

ありがとうございます。

+0

テンプレートとして保存したくないのですか?どのタイプのファイルを保存したいのですか? – 0m3r

+0

テンプレートは中央にあり、多くのユーザーがそこからDocument1.docxを開きます。私はDocument1.docxをフォームから取得したファイル名を持つ特定の場所に保存したいと思います。 – ThunderJ

+0

'Doc.SaveAs2 StrPath&" \ "&strFilename'というパスを含めて保存する必要があります。あらかじめフォルダ* StrPath *が存在するかどうかを確認する方が良いでしょう。また、 '\\ FileServerNAS \ Documents \'や '\\ YourWorkDomain.com \ DFSroot \ Site \ Documents \'のような 'V:'の代わりにいくつかのUNCパスを考えてみましょう。または、* CustomDocumentProperties *を追加してこのパスを保存します。 – PatricK

答えて

0

私は、この便利なリンクのおかげで、いくつかのより多くを掘ると、私の問題の最後の部分を解決することができた:「example.com」私は&を付加フィールドの値を参照することになった

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

.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 

ご覧いただいた皆様、有益なコードとコメントをお寄せいただきありがとうございます。

関連する問題