前提・実現したいこと
Windows版 Excel VBAにて自動メール送信するツール使っています。
これを今度Macに移植する作業の中で問題にぶつかりました。
WindowsではCDO(Microsoft CDO for Windows 2000 Library)を利用しています。
Macではこれが標準で準備されておらず、実行できません。
質問は、
Macにもこのライブラリを追加することができるのか?
追加できるのであればどうしたら良いのか?
追加できない場合には、Excel for MacのVBAにて自動メール送信する代替方法はあるのか?
です。
色々と探したのですが、非力ながら情報を見つけることができませんでした。
どなたかわかる方がいましたらご教示頂けましたら幸いです。
どうぞ宜しくお願い致します。
発生している問題・エラーメッセージ
コンパイル エラーです。: ユーザー定義型は定義されていません。
該当のソースコード
VBA
1'******************************************************************************* 2' CDOでメールを送信する 3'******************************************************************************* 4' [参照設定] 5' ・Microsoft CDO for Windows 2000 Library 6'******************************************************************************* 7Option Explicit 8 9 'CDO Const 10 Const cdoSendUsingMethod = _ 11 "http://schemas.microsoft.com/cdo/configuration/sendusing" 12 Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver" 13 Const cdoSMTPServerPort = _ 14 "http://schemas.microsoft.com/cdo/configuration/smtpserverport" 15 Const cdoSMTPConnectionTimeout = _ 16 "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" 17 Const cdoSMTPAuthenticate = _ 18 "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" 19 Const cdoSendUsingPort = 2 20 Const cdoAnonymous = 0 21 Const cdoLanguageCode = _ 22 "http://schemas.microsoft.com/cdo/configuration/languagecode" 23 24 'Font Code 25 Const cdoShift_JIS = "shift-jis" 26 Const cdoEUC_JP = "euc-jp" 27 Const cdoISO = "iso-2022-jp" 28 Const cdoUTF_7 = "utf-7" 29 Const cdoUTF_8 = "utf-8" 30 31 'kitei 32 Private Const cnsConfiguration = "http://schemas.microsoft.com/cdo/configuration/" 33 Private Const cnsSendUsing = 2 34 35'******************************************************************************* 36' メール送信テストプログラム 37'******************************************************************************* 38Sub TEST() 39 Dim MailSmtpServer As String 40 Dim MailFrom As String 41 Dim MailTo As String 42 Dim MailSubject As String 43 Dim MailBody As String 44 Dim strMSG As String 45 46 ' 送信確認 47 If MsgBox("メールを送信します。", vbYesNo) <> vbYes Then Exit Sub 48 MailSmtpServer = Cells(1, 2).Text ' SMTPサーバ 49 MailFrom = Cells(2, 2).Text ' 発信者 50 MailTo = Cells(3, 2).Text ' 宛先 51 MailSubject = Cells(4, 2).Text ' 件名 52 MailBody = Cells(5, 2).Text ' 本文 53 ' メール送信(CC,BCCはブランク) 54 strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _ 55 MailSubject, MailBody) 56 If strMSG <> "OK" Then MsgBox Mid(strMSG, 3) 57End Sub 58 59 60'******************************************************************************* 61' メール送信(CDO) 62'******************************************************************************* 63' [引数] 64' ①MailSmtpServer : SMTPサーバ名(又はIPアドレス) 65' ②MailFrom : 送信元アドレス 66' ③MailTo : 宛先アドレス(複数の場合はカンマで区切る) 67' ④MailCc : CCアドレス(複数の場合はカンマで区切る) 68' ⑤MailBcc : BCCアドレス(複数の場合はカンマで区切る) 69' ⑥MailSubject : 件名 70' ⑦MailBody : 本文(改行はvbCrLf付加) 71' ⑧MailAddFile : 添付ファイル(複数の場合はカンマで区切るか配列渡し) ※Option 72' ⑨MailCharacter : 文字コード指定(デフォルトはShift-JIS) ※Option 73' [戻り値] 74' 正常時:"OK", エラー時:"NG"+エラーメッセージ 75'******************************************************************************* 76Private Function SendMailByCDO(MailSmtpServer As String, _ 77 MailFrom As String, _ 78 MailTo As String, _ 79 MailCc As String, _ 80 MailBcc As String, _ 81 MailSubject As String, _ 82 MailBody As String, _ 83 Optional MailAddFile As Variant, _ 84 Optional MailCharacter As String) 85 Const cnsOK = "OK" 86 Const cnsNG = "NG" 87 'Dim objCDO As New CDO.Message 88 Dim objCDO As Object 89 Dim vntFILE As Variant 90 Dim IX As Long 91 Dim strCharacter As String, strBody As String, strChar As String 92 93 On Error GoTo SendMailByCDO_ERR 94 SendMailByCDO = cnsNG 95 96 ' 文字コード指定の確認 97 If MailCharacter <> "" Then 98 ' 指定ありの場合は指定値をセット 99 strCharacter = MailCharacter 100 Else 101 ' 指定なしの場合はShift-JISとする 102 strCharacter = cdoShift_JIS 103 End If 104 105 ' 本文の改行コードの確認 106 ' Lfのみの場合Cr+Lfに変換 107 strBody = Replace(MailBody, vbLf, vbCrLf) 108 ' 上記で元がCr+Lfの場合Cr+Cr+LfになるのでCr+Lfに戻す 109 MailBody = Replace(strBody, vbCr & vbCrLf, vbCrLf) 110 111 #If Mac Then 112 Set objCDO = New CDO.Message 113 #Else 114 Set objCDO = CreateObject("CDO.Message") 115 #End If 116 117 With objCDO 118 With .Configuration.Fields ' 設定項目 119 .Item(cdoSendUsingMethod) = cdoSendUsingPort ' 外部SMTP指定 120 .Item(cdoSMTPServer) = MailSmtpServer ' SMTPサーバ名 121 .Item(cdoSMTPServerPort) = 25 ' ポート№ 122 .Item(cdoSMTPConnectionTimeout) = 60 ' タイムアウト 123 .Item(cdoSMTPAuthenticate) = cdoAnonymous ' 0 124 .Item(cdoLanguageCode) = strCharacter ' 文字セット指定 125 .Update ' 設定を更新 126 End With 127 .MimeFormatted = True 128 .Fields.Update 129 .From = MailFrom ' 送信者 130 .To = MailTo ' 宛先 131 If MailCc <> "" Then .CC = MailCc ' CC 132 If MailBcc <> "" Then .BCC = MailBcc ' BCC 133 .Subject = MailSubject ' 件名 134 .TextBody = MailBody ' 本文 135 .TextBodyPart.Charset = strCharacter ' 文字セット指定(本文) 136 ' 添付ファイルの登録(複数対応) 137 If ((VarType(MailAddFile) <> vbError) And _ 138 (VarType(MailAddFile) <> vbBoolean) And _ 139 (VarType(MailAddFile) <> vbEmpty) And _ 140 (VarType(MailAddFile) <> vbNull)) Then 141 If IsArray(MailAddFile) Then 142 For IX = LBound(MailAddFile) To UBound(MailAddFile) 143 .AddAttachment MailAddFile(IX) 144 Next IX 145 ElseIf MailAddFile <> "" Then 146 vntFILE = Split(CStr(MailAddFile), ",") 147 For IX = LBound(vntFILE) To UBound(vntFILE) 148 If Trim(vntFILE(IX)) <> "" Then 149 .AddAttachment Trim(vntFILE(IX)) 150 End If 151 Next IX 152 End If 153 End If 154 .Send ' 送信 155 End With 156 Set objCDO = Nothing 157 SendMailByCDO = cnsOK 158 Exit Function 159 160'------------------------------------------------------------------------------- 161SendMailByCDO_ERR: 162 SendMailByCDO = cnsNG & Err.Number & " " & Err.Description 163 On Error Resume Next 164 Set objCDO = Nothing 165End Function 166 167'-----------------------------<< End of Source >>------------------------------- 168 169
試したこと
Windows のCDOライブラリである、
cdosys.dll
をそのままExcel for Mac のVBAの参照設定に追加しようとしたが、
当然ながら追加できなかった。
それ以外の方法を思いつくことや、情報を得ることができず、立ち往生しています。
補足情報(FW/ツールのバージョンなど)
***開発環境
MacBook Pro Mid 2015
macOS Mojave (バージョン10.14.16)
Excel for Mac (バージョン16.28)
Microsoft Visual Basic for Applications 7.1