アプリ版:「スタンプのみでお礼する」機能のリリースについて

vbaによるメール送信

開いているExcelファイルをメールで送りたいと思っています。
Application.Dialogs(xlDialogSendMail).Show を使っていますが、
エラーが発生してしまいます。

エラー内容
メールでエラー発生。excelをいったん終了し、
メールシステムを再起動してから、もう一度実行して下さい。

原因と対処方法を教えて下さい。

A 回答 (4件)

こんばんは。



>Set myOL = GetObject(, "Outlook.Application")の所でエラー発生。

確かに、そこは、矛盾がありますから、通常では、エラー自体はありますが、VBEditorの一般的な設定では、エラーが返るはずがありません。VBEditor が、エラートラップの設定を無視する、試験モードになっているようです。

出来る限り、以下の設定にしてください。
[ツール]→[オプション]→[全般]→[エラートラップ]

私の場合は、
・エラー処理対象外のエラーで中断(E)
を選んでいます。

たぶん、「エラー発生時に中断」という設定だと思います。

もし、そこを変えたくないのでしたら、コメントブロック(')をおくか、削除してください。ただ、高度なマクロは使えませんので、そのままにしておくのは、あまりお勧めしません。
例:
'Set myOL = GetObject(, "Outlook.Application")
    • good
    • 0
この回答へのお礼

回答有難う御座いました。

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

お礼日時:2010/02/28 16:35

こんばんは。



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のコンポーネントは、オブジェクトを作成出来ない。

対処方法は、有りますか?

補足日時:2010/01/31 01:09
    • good
    • 0

手動で出来ますか?


[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/sub0 …
    • good
    • 0
この回答へのお礼

回答有難う御座いました。

手動でも出来なかったです。
参考にさせて頂きたいと思います。

お礼日時:2010/02/28 16:29

私も以前、ExcelのVBAでメールを自動受信して集計する物を作った事があります。


その時はメールの送受信にはBASP21というモジュールを使いました。
http://www.hi-ho.ne.jp/babaq/basp21.html
"BASP21 Excel"で検索すると参考になると思います。

この回答への補足

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

補足日時:2010/01/30 17:32
    • good
    • 0
この回答へのお礼

回答有難う御座います。

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

次回の参考にしたいと思います。
有難う御座いました。

お礼日時:2010/01/31 01:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A