• ベストアンサー

マクロにてメール送信

よろしくお願いします。 上記のマクロを組みましたが、うまく作動するPCとエラーを起こすPCが発生しております。 closeのマクロに以下の内容で組み込んでます。 Dim myrecipients myrecipients = Array("メールアドレス(1)", "メールアドレス(2)") ActiveWorkbook.SendMail Recipients:=myrecipients, Subject:="ブック名", returnreceipt:=True なにか落ち度がありますか? ※XPで作動するPCとエラー発生するPCが出ております。

質問者が選んだベストアンサー

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

こんばんは。 >ちなみに、2000で早速コピペしてみて行ってみると、新規bookが作成されてしまいます。何故でしょうか? # ActiveWindow.SelectedSheets.Copy そういう設定をしました。人に送るときは、新規ブックから送信という形にするのがふつうなのですね。不要なら、それを取り去ってください。しかし、ActiveWorkbook が、自ブックですと、マクロ付きになってしまいます。なるべく、何も入れてないブックで送信するのが、ベストです。 97 でも、コード的には問題ないはずですが、本当の問題は、どうやら別の所にあるようです。一旦、メーラーを立ち上げるだけでは解決しないようです。 なお、コードは、そのままテキストを貼り付けるか、VBEditor で、コードをエキスポートして、97でインポートしたほうがトラブルが少ないです。2000で作ったブックをそのまま97には使わないほうがよいです。

その他の回答 (2)

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

こんにちは。Wendy02です。 昨日の発言は撤回します。 今、コードを作って、何度も試して調べてみましたが、私の予想とはだいぶ違いました。Excelがハングするのは、何かのタイミングでメーラーとのつながりが良くないということで、特に、コード自体の問題ではないようです。実際、私などのVBAを作るものは、こういうコードは滅多に書かないのです。別のコンポーネントを使って送信しています。 私の試したサンプルコード Sub MailingTest()   Dim myRecipients As Variant   Dim BookName As String   myRecipients = Array("******@****", "*****@***.**")   If IsNull(Application.MailSession) Then Application.MailLogon   With ActiveWorkbook    BookName = .Name    ActiveWindow.SelectedSheets.Copy    .SendMail Recipients:=myRecipients, Subject:=BookName, ReturnReceipt:=False    Application.MailLogoff   End With End Sub 以下のサイトにあるようなコンポーネントとコードを使います。

参考URL:
http://www.hi-ho.ne.jp/babaq/vbtips.html
tomtom0628
質問者

補足

丁寧なご指導ありがとうございます。 しかし、重大なミスに気がつきました・・・ エクセルプログラムを作成しているのは2000なのですが、実際に使用しようとしているのは97でした・・・ 97でも、Wendy02の用意していただいたモノが作動すればよいのですが・・・ ちなみに、2000で早速コピペしてみて行ってみると、新規bookが作成されてしまいます。何故でしょうか?

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

こんばんは。 >なにか落ち度がありますか? 分りませんね。いくつか推理するだけです。 コードは論理的には間違っていませんね。 >closeのマクロに以下の内容で組み込んでます。 Close って、Auto_Close のことでしょうか? たぶん、ThisWorkbook_BeforeClose よりは、安全かと思いますが。 後は、Recipients:=myrecipients のほうの配列をやめて、For Each ~ In /Next のループにしてみるとか? DoEvents を置いてみるとか。 Wait や Sleep を置いてみるとか。 そのぐらいかしらね。 それと、PCによってエラーが出るのは、そのIEのインターネットオプションのプログラムの設定には関係ないでしょうか?

tomtom0628
質問者

補足

ありがとうございます! しかし、高度すぎて素人の僕にはわかりません・・・ こんなふうに!と、作り変えていただけたら嬉しいです。 要求ばかりで申し訳ないです。。

関連するQ&A

専門家に質問してみよう