エクセルからメール送信です
自分のパソコンからは
送れるのですが
USBにコピーして
ちがうパソコンだと
Dim objOutlook As Outlook.Application
ここが
ユーザー定義型は定義されていません
って表示でできません
理由もわかりません
助けてください
Option Explicit
'設定シート情報
Private Const SETTING_SHEET_NAME As String = "設定シート"
Private Const RANGE_TO As String = "B3"
Private Const RANGE_CC As String = "B4"
Private Const RANGE_BCC As String = "B5"
Private Const RANGE_SUBJECT As String = "B6"
Private Const RANGE_BODY As String = "A8:B37"
'送信ボタン押下時の処理
Public Sub SendBtnClicck()
Dim wsSetting As Worksheet
Set wsSetting = ThisWorkbook.Sheets(SETTING_SHEET_NAME)
If wsSetting.OLEObjects("OptBtnSend").Object.Value Then Call SendEmail End If
End Sub
'ファイル保存時の処理
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Dim wsSetting As Worksheet
Set wsSetting = ThisWorkbook.Sheets(SETTING_SHEET_NAME)
If wsSetting.OLEObjects("OptBtnSave").Object.Value Then Call SendEmail End If
End Sub
'メール送信の処理
Private Sub SendEmail()
On Error GoTo ErrorHandler
Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Dim wsSetting As Worksheet Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem) Set wsSetting = ThisWorkbook.Sheets(SETTING_SHEET_NAME) '設定シートの値を設定する With wsSetting objMail.TO = .Range(RANGE_TO).Value 'TO objMail.CC = .Range(RANGE_CC).Value 'CC objMail.BCC = .Range(RANGE_BCC).Value 'BCC objMail.Subject = .Range(RANGE_SUBJECT).Value '件名 objMail.Body = WorksheetFunction.TextJoin(vbLf, False, .Range(RANGE_BODY).Value) '本文 'メールの形式 If wsSetting.OLEObjects("OptBtnHTML").Object.Value Then objMail.BodyFormat = olFormatHTML End If If wsSetting.OLEObjects("OptBtnPlain").Object.Value Then objMail.BodyFormat = olFormatPlain End If End With 'メール送信 objMail.Send GoTo Finally
ErrorHandler:
MsgBox "メールの送信に失敗しました", vbOKOnly + vbCritical
Finally:
Set objOutlook = Nothing
End Sub
回答2件
あなたの回答
tips
プレビュー