私は自分の組織のために過去数ヶ月間データベースに取り組んでいます。私はOffice 2013を使用しています。Outlookを使用して顧客に電子メールでインターネットからコードを取得しました。しかし、コードをどれだけ編集しても、問題はまだ残っています。VBAで送信された電子メールを送信するとOutlookが終了する
私は.Display
プロパティを設定しているので、ユーザーは送信前にメッセージを見ることができます。問題は私にメッセージを表示することですが、送信ボタンをクリックすると、Outlookが閉じます。ただし、メールの.Send
のプロパティを使用しても問題ありません。
目的:私はhtml電子メールを送信しています。テーブルのhtmlコードを保存しましたので、ボタンをクリックしてテンプレートを取得できます。これは、ユーザーがさらに編集できるようになります。代替案は高く評価されています! :D
Private Sub CmdEmail_Click()
Dim oApp As Object
Dim oMail As Object
Dim olAccount As Object
Dim olAccounts As Object
Dim olAccountTemp As Object
Dim vallL As String
Dim foundAccount As Boolean
Dim strFrom As String
On Error Resume Next
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(olMailItem)
Set olAccount = oApp.Account
Set olAccountTemp = oApp.Account
strFrom = CompanyEmail
foundAccount = False
Set olAccounts = oApp.Application.Session.Accounts
For Each olAccountTemp In olAccounts
Debug.Print olAccountTemp.SmtpAddress
If (olAccountTemp.SmtpAddress = strFrom) Then
Set olAccount = olAccountTemp
foundAccount = True
Exit For
End If
Next
Set oMail.SendUsingAccount = olAccount
If foundAccount Then
Debug.Print "ACCT FOUND!"
With oMail
.BodyFormat = olFormatHTML 'Set body format to HTML
vallL = DLookup("[Memo]", "HtmlEmailT", "[ID] = 1") & "rs!CliName"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 2") & "rs!InvoiceId"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 3") & "rs!BalDue"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 4") & "rs!InvoiceDate"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 5") & "rs!InvTotal"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 6")
.HTMLBody = vallL
.SendUsingAccount = olAccount
.SentOnBehalfOfName = """CompnayName"" <CompanyEmail>"
.Display
'.Send
End With
Else
Debug.Print "No acct found"
MsgBox "The chosen email is not signed in!!" & vbCrLf & "Please sign in first"
End If
Set oApp = Nothing
Set oMail = Nothing
Set olAccounts = Nothing
Set olAccount = Nothing
Set olAccountTemp = Nothing
End Sub
*会社のメールアドレスと会社名はフィールドではありません。
このコードを実行すると、Outlookが既に開いているか、Outlookでコードを開くことができますか? – Chrismas007
これについて言及しなかったことをお詫び申し上げます。それは、見通しが開かれない場合にのみ起こります。それが開いている場合、問題はありません。 –
エラー時に削除を再開します。コード全体で使用しないでください。使用理由が決まったら、On Error Goto 0が必要です。ここで使用する理由はありません。 – niton