- 締切済み
vbaによるメール送信
vbaによるメール送信 開いているExcelファイルをメールで送りたいと思っています。 Application.Dialogs(xlDialogSendMail).Show を使っていますが、 エラーが発生してしまいます。 エラー内容 メールでエラー発生。excelをいったん終了し、 メールシステムを再起動してから、もう一度実行して下さい。 原因と対処方法を教えて下さい。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >Set myOL = GetObject(, "Outlook.Application")の所でエラー発生。 確かに、そこは、矛盾がありますから、通常では、エラー自体はありますが、VBEditorの一般的な設定では、エラーが返るはずがありません。VBEditor が、エラートラップの設定を無視する、試験モードになっているようです。 出来る限り、以下の設定にしてください。 [ツール]→[オプション]→[全般]→[エラートラップ] 私の場合は、 ・エラー処理対象外のエラーで中断(E) を選んでいます。 たぶん、「エラー発生時に中断」という設定だと思います。 もし、そこを変えたくないのでしたら、コメントブロック(')をおくか、削除してください。ただ、高度なマクロは使えませんので、そのままにしておくのは、あまりお勧めしません。 例: 'Set myOL = GetObject(, "Outlook.Application")
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 Basp21 やCDO が悪いわけではありませんが、今のスタイルからでは、MAPIを勧めたいですね。 エラーは確認できました。 >Application.Dialogs(xlDialogSendMail).Show 今回、Excelのバージョンが書かれていないので、正確なことは言えませんが、開いているBookを添付するという形を取るので、二度目はないものだと思います。やはり、本来は、一旦、ブックを別名で保存して、それを、Mapi で送る方法がよいのではないかと思いますが、以下は、別に保存するのではなく、自ブックに対して、行います。 別名保存する方法は、少し、テクニックが必要です。そのまま保存しても、ActiveBook が移動してしまいます。 '------------------------------------------- Sub Mail_Test() Dim myOL As Object ' Outlook.Application Dim myMail As Object ' Outlook.MailItem Dim xlName As String Dim myAttachments As Object 'Attachments 'ブックを保存 ThisWorkbook.Save xlName = ThisWorkbook.FullName '別のブックの場合 (上のSave は要らない) 'xlName = ThisWorkbook.Path & "\" & "Test01.xls" On Error Resume Next Set myOL = GetObject(, "Outlook.Application") If Err.Number <> 0 Then Set myOL = CreateObject("Outlook.Application") End If On Error GoTo 0 Set myMail = myOL.CreateItem(olMailItem) Set myAttachments = myMail.Attachments myAttachments.Add xlName, , , "xlTest" With myMail .To = "×××@×××" 'メールアドレス .Subject = "Test" '題名 .Body = "前略" & vbCrLf & "Excelファイルを添付しました。" .Save .Display End With Set myMail = Nothing Set myOL = Nothing End Sub '-------------------------------------------
補足
エクセルのバージョンは、2003~。 メーラーは、ホットメールを使おうと思っています。 上記をそのまま検証した所、12行目の Set myOL = GetObject(, "Outlook.Application")の所でエラー発生。 内容 ActiveXのコンポーネントは、オブジェクトを作成出来ない。 対処方法は、有りますか?
- hige_082
- ベストアンサー率50% (379/747)
手動で出来ますか? [Alt]を押したまま[F][D][A]の順で押してみてください 同じエラーが出るはずですが メーラーからメールの送信できますよね? excelからメーラーにデータを渡しているだけなので メーラーの種類やバージョンにもよるようですよ どうしても、マクロで送信したいのであれば #1さんの方法にするか この辺りを熟読してみては如何でしょう http://www.hi-ho.ne.jp/babaq/vbtips.html http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html
お礼
回答有難う御座いました。 手動でも出来なかったです。 参考にさせて頂きたいと思います。
- yama1718
- ベストアンサー率41% (670/1618)
私も以前、ExcelのVBAでメールを自動受信して集計する物を作った事があります。 その時はメールの送受信にはBASP21というモジュールを使いました。 http://www.hi-ho.ne.jp/babaq/basp21.html "BASP21 Excel"で検索すると参考になると思います。
お礼
回答有難う御座います。 BASP21 Excelを調べましたが、インストール等色々と複雑なので、 個人で使用するならいいのですが、複数人ならそれぞれインストールが 必要なのではと思ったので、今回は控えたいと思います。 次回の参考にしたいと思います。 有難う御座いました。
補足
BASP21 Excelを使わない方法は、無いのでしょうか?
お礼
回答有難う御座いました。 結果的には、全て消す事になってしまいました。 次回の参考に使いたいと思います。