[[20100319143109]] 『エクセルでメーラーを起動させたい』(みなみ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルでメーラーを起動させたい』(みなみ)

 エクセル2007、vistaです。

 E1セルに入力されたメールアドレスと
 I10セルに入力されたsubject、
 K2、K3セルに入力された本文が入った状態で 
 アウトルックを起動させたいと思い
 下記のコードを書きました。

 最初はうまくいったのですが
 どこかをいじってしまったのか
 アプリケーション定義またはオブジェクト定義のエラー
 と出てしまいました。

 どこがダメなのか教えていただけませんか?

 Sub sendmail()
 '
 sendAddress = Range("E1").Value
 kenmei = Range("I10").Value

 honbun = Range("K2").Value & "%0A" & Range("K3").Value 

 If Range("E1").Value = "" Then
 MsgBox "メールアドレスが入力されていません"
 Exit Sub
 End If

 Selection.Hyperlinks.Add(Anchor:=Range("E1"), _
 Address:="mailto:" & sendAddress & "?subject=" & kenmei & "&body=" &  honbun).Follow

 E1が空欄のときに起こるのでしょうか…?

 一応、私のほうでは動作していますがSelectionが曖昧なので不安定なのかな?

 Selection.Hyperlinks.Add(Anchor:=Range("E1"), _
   Address:="mailto:" & sendAddress & "?subject=" & kenmei & "&body=" & honbun).Follow

 の部分を

 ThisWorkbook.FollowHyperlink _
   Address:="mailto:" & sendAddress & "?subject=" & kenmei & "&body=" & honbun

 にしてみたらどうなりますか?
 それでダメならアウトルックが既定のメーラーになっていないとか
 (momo)

 コメントありがとうございます。
 やってみましたが下記のエラーが出てしまいます。

 実行時エラー '5':
 プロシージャの呼び出し、または引数が不正です。


 さらに、E1にアドレスが入っていないときに実行すると
 E1にhonbunが入ってしまうのですが
 これはなぜですか?
 Anchor:=Range("E1"), の意味が今一つ分からないのですが…
 (みなみ)


 なんか他の部分にエラーがありませんか?
 プロシージャは1つだけでしょうか?
 コードの全体はどのようになっていますか?
 (momo)

 momo様。。。
 コードはこれですべてです。
 いろいろ試してみたら、どうやら本文の長さが長いと
 Selection.Hyperlinks…の個所で
 実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラー
 と出ます。
 こないだとエラー表示がちがいます!!

 ハイパーリンクをしたときの本文文字数の設定って
 どこかでできるのでしょうか?
 特に指定したつもりはないので初期設定の状態だと思いますが…
 どうかよろしくお願いいたします。
 (みなみ)

 あ〜確か256文字あたりで制限があったように思います。

 では、ハイパーリンクではなくて直接アウトルックを操作する方法ではどうでしょうか?

  Sub sendmail()
  With CreateObject("Outlook.Application").CreateItem(0)
    .To = Range("E1").Value
    .Subject = Range("I10").Value
    .Body = Range("K2").Value & "%0A" & Range("K3").Value
  '  .Send '直接送信する場合
  End With
  End Sub

 (momo)

 momo様。。。
 ありがとうございます。
 教えていただいた通りのコードにしてみましたが
 何も起こりません。
 F8で順に送ってみても、エラーは出ませんがアウトルックも立ち上がりません。
 アウトルックが既定のプログラムになっていないのでしょうか?
 または参照設定の関係でしょうか?
 チェックの入っているものは上から
 Visual Basic For Applications
 Microsoft Excel 12.0 Object Library
 OLE Automation
 Microsoft Office 12.0 Object Library
 Microsoft Forms 2.0 Object Library
 Microsoft Office Outlook View Control
 です。
 大変お手数掛けますがよろしくお願いいたします。
 (みなみ)

  Sub sendmail()
  With CreateObject("Outlook.Application")
    .Visible = True
    With .CreateItem(0)
      .To = Range("E1").Value
      .Subject = Range("I10").Value
      .Body = Range("K2").Value & "%0A" & Range("K3").Value
    '  .Send '直接送信する場合
    End With
  End With
  End Sub

 こんな風にしてもダメですかね?
 アウトルックの環境が無いので(うちはロータスノーツ)確認が取れないので・・・すみません。
 (momo)

 momo様
 ありがとうございます。

    .Visible = True
 ↑のところで
 実行時エラー438
 オブジェクトはこのプロパティまたはメソッドをサポートしていません
 と出てしまいます。
 改行の問題かと思い
 With CreateObject("Outlook.Application").Visible = True
 と続けてみたら、やはりここで同じメッセージがでてしまいます。
 (みなみ)


 サポートしていないのであれば使えませんねぇ
 ん〜・・・テスト環境のある回答者さんに見てもらえるといいのですが・・・
 (momo)

 ↓のようにしたらどうなりますか?

 Sub sendmail()
  With CreateObject("Outlook.Application")
    '.Visible = True 'この行を削除かコメントアウト
    .GetNamespace("MAPI").GetDefaultFolder(6).Display '追加1
    With .CreateItem(0)
      .To = Range("E1").Value
      .Subject = Range("I10").Value
      .Body = Range("K2").Value & "%0A" & Range("K3").Value
      .Display '追加2
    '  .Send '直接送信する場合
    End With
  End With
 End Sub

 追加1:GetDefaultFolder(6) ←括弧の中の数値は適宜変えてください。
 私のPCでは (6)で受信トレイがひょうじされました。

 追加2:メールアイテムの表示
 (ゴンザレス)

 ゴンザレス様。
 見ていただいてありがとうございます。
 早速試してみました。
 メーラーの起動はうまくいき
 本文も入るのですが
 改行がされず、%0Aのように文字列が入ってしまいます。
 ここをなんとかできれば完ぺきに近いものができるのですが…
 
 それと欲を言えば、
 追加1:GetDefaultFolder(6) ←括弧の中の数値は適宜変えてください。
 私のPCでは (6)で受信トレイがひょうじされました。
 の部分で、私も受信トレイが表示されたのですが
 これを表示させない方法はありますか?
 
 わがままばかりですみませんがよろしくお願いします!
 (みなみ)

 >改行がされず、%0Aのように文字列が入ってしまいます。

 "%0A"
 を
 vbCrLf
 に変えてみてください。

 .Body = Range("K2").Value & "%0A" & Range("K3").Value
 ↓
 .Body = Range("K2").Value & vbCrLf & Range("K3").Value

 >これを表示させない方法はありますか?

 .GetNamespace("MAPI").GetDefaultFolder(6).Display '追加1

 この部分をコメントアウトするか削除するだけです。

 OUTLOOKを使わないでメールを送信することもできます。
 参考HPです。

 VBA応用(CDOでメール送信)
 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_080.html

 (ゴンザレス)

 できました!!!
 本当に助かりました(><)
 神様みたいです(笑)
 ありがとうございました。
 momo様にも感謝しています。
 お二方ともありがとうございました。
 (みなみ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.