2017-05-17 11 views
0

Outlookでマクロを作成して特定の値を選択できるようにし、選択内容に基づいて電子メールテンプレートを再フォーマットし、テキストを置き換えるか空の電子メールを開き、電子メールのタイトル、本文等(名前、姓などの値) これまで私はuserformを行っています。VBA outlook userformは電子メールテンプレートに変更を適用します

enter image description here

Private Sub TextBox1_Change() 

End Sub 

Private Sub TextBox2_Change() 

End Sub 

Private Sub TextBox3_Change() 

End Sub 

Private Sub UserForm_Initialize() 
With ComboBox1 
.AddItem "Form1" 
.AddItem "Form2" 

End With 

With ComboBox2 
.AddItem "Mr" 
.AddItem "Miss" 
.AddItem "Mrs" 
.AddItem "Ms" 

End With 

    With ComboBox3 
.AddItem "You" 
.AddItem "He" 
.AddItem "She" 

End With 

End Sub 

と実行ボタンのコード。

Private Sub CommandButton1_Click() 

If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Then 
MsgBox ("Fill in all Boxes") 

End If 
End Sub 

Sub template() 

Dim myItem As Outlook.MailItem 
Dim strContact As String 
Dim strHTML As String 

Dim typeofapplication As String 
Dim title As String 
Dim name As String 
Dim surename As String 
Dim expierydate As String 
Dim gender As String 

typeofapplication = ComboBox1.Value 
title = ComBox2.Value 
name = TextBox1_Change.Value 
surename = TextBox2_Change.Value 
expierydate = TextBox3_Change.Value 
gender = ComBox3.Value 

Set myItem = Application.CreateItemFromTemplate("C:\test.oft") 
strHTML = myItem.HTMLBody 

myItem.Display 
End Sub 

私はユーザーフォームを使用しない場合

myItem.Display

上のボタンを押して[OK]を停止した後、オープニングテンプレートが正常に動作し、「すべてのボックスに記入し」までのコードは正常に動作します。 私が間違っていたことは何ですか?

+0

のCommandButton1をクリックした後に動作するようになっあなたのコードは、テンプレートのサブを呼ぶことになった場合。終了後にテンプレートを呼び出すif、終了する前にsubを終了するif。 – Tehscript

+0

私はCommandButton1_Clickにサブテンプレートを追加しようとしました。それはmyItemで停止します。表示 – folkstorm

+0

それは何を意味するのですか?それはエラーを返しますか?あなたはもっと具体的になりますか? – Tehscript

答えて

0

私のコメントで述べたように、CommandButton1_Click Subでtemplate subを呼び出す必要があります。また、テキストボックスまたはコンボボックスが空の場合にコードを実行したくないため、条件が満たされているときにサブを終了する必要があります。何かがうまくいかないとき第二に、あなたは通常、エラー番号といくつかの説明と、エラーメッセージが表示されて、それについて通知されます

Private Sub CommandButton1_Click() 
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Then 
    MsgBox ("Fill in all Boxes") 
    Exit Sub 
End If 
    template 
End Sub 

:それは次のようになります。私はこのエラーが何であるかを得るためにあなたのコードを試しなければならなかった。

「このエラーは、ダイアログボックスが開いているためOutlookできません。閉じてからもう一度お試しください」というエラーが表示されます。あなたの質問にこれを示していたなら、あなたは「アンロード・ミー」と瞬時に答えてくれるでしょう。次に質問を投稿するときには、エラーを示す必要があります。

テンプレートメールを開くには、最初にユーザーフォームを閉じる必要があるため、実行できません。したがって、このようなあなたのコード内でUnload Meを挿入します。

Set myItem = Application.CreateItemFromTemplate("C:\test.oft") 
strHTML = myItem.HTMLBody 

Unload Me 
myItem.Display 
End Sub 
+0

返信いただきありがとうございました。ご不便をおかけして申し訳ありません、私はかなり初心者です。午前中にあなたの提案を最初のものを現在のPC上に適用します。私は見通しがありません。 – folkstorm

関連する問題