[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルでメーラーを起動させたい』(みなみ)
エクセル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.