• 締切済み

vbaによるメール送信

vbaによるメール送信 開いているExcelファイルをメールで送りたいと思っています。 Application.Dialogs(xlDialogSendMail).Show を使っていますが、 エラーが発生してしまいます。 エラー内容 メールでエラー発生。excelをいったん終了し、 メールシステムを再起動してから、もう一度実行して下さい。 原因と対処方法を教えて下さい。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 >Set myOL = GetObject(, "Outlook.Application")の所でエラー発生。 確かに、そこは、矛盾がありますから、通常では、エラー自体はありますが、VBEditorの一般的な設定では、エラーが返るはずがありません。VBEditor が、エラートラップの設定を無視する、試験モードになっているようです。 出来る限り、以下の設定にしてください。 [ツール]→[オプション]→[全般]→[エラートラップ] 私の場合は、 ・エラー処理対象外のエラーで中断(E) を選んでいます。 たぶん、「エラー発生時に中断」という設定だと思います。 もし、そこを変えたくないのでしたら、コメントブロック(')をおくか、削除してください。ただ、高度なマクロは使えませんので、そのままにしておくのは、あまりお勧めしません。 例: 'Set myOL = GetObject(, "Outlook.Application")

25630
質問者

お礼

回答有難う御座いました。 結果的には、全て消す事になってしまいました。 次回の参考に使いたいと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 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 '-------------------------------------------

25630
質問者

補足

エクセルのバージョンは、2003~。 メーラーは、ホットメールを使おうと思っています。 上記をそのまま検証した所、12行目の Set myOL = GetObject(, "Outlook.Application")の所でエラー発生。 内容 ActiveXのコンポーネントは、オブジェクトを作成出来ない。 対処方法は、有りますか?

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

手動で出来ますか? [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

25630
質問者

お礼

回答有難う御座いました。 手動でも出来なかったです。 参考にさせて頂きたいと思います。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.1

私も以前、ExcelのVBAでメールを自動受信して集計する物を作った事があります。 その時はメールの送受信にはBASP21というモジュールを使いました。 http://www.hi-ho.ne.jp/babaq/basp21.html "BASP21 Excel"で検索すると参考になると思います。

25630
質問者

お礼

回答有難う御座います。 BASP21 Excelを調べましたが、インストール等色々と複雑なので、 個人で使用するならいいのですが、複数人ならそれぞれインストールが 必要なのではと思ったので、今回は控えたいと思います。 次回の参考にしたいと思います。 有難う御座いました。

25630
質問者

補足

BASP21 Excelを使わない方法は、無いのでしょうか?

関連するQ&A