プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。

Microsoft Outlook2003使用で
メール送信のマクロを見様見真似で作ってみたのですが、本文部分がうまくいきません(Best regardsしか表示されません)。
どうすれば正しく反映されるでしょうか?

シートのB1にToアドレスを記入していてTo_addressと名前付
以下、Cc_addressとSubjectも同様にしています。
本文の文章は何行かあり、途中で空白行も入れたいのですが、そこまでまだ手がつけられていません。
本文の文章が3行あるとすると、このマクロではComment1、Comment2、Comment3と名前付しています。

Sub SendEmail()

Dim OlApp As Outlook.Application
Dim mItem As Outlook.MailItem

Dim cell As Range
Dim Subj As String
Dim EmailAddr As String
Dim Recipient As String
Dim Msg As String
Dim Message As String
Dim Sender As String
Dim Comments As String
Dim Comments2 As String
Dim report As String

Worksheets("Sheet1").Activate

'Create Outlook object
 Set OutlookApp = New Outlook.Application
'Get the data
Subj = Range("Subject")
EmailAddr = Range("To_address")
CCAddr = Range("Cc_address")
Body = Range("Comment1") & ("Comment2") & ("Comment3")

'Compose message
Msg = Msg & Comment1 & vbCrLf & vbCrLf
Msg = Msg & Comment2 & vbCrLf & vbCrLf
Msg = Msg & "Best regards," & vbCrLf & vbCrLf
'Create Mail Item
Set mItem = OutlookApp.CreateItem(olMailItem)
With mItem
.To = EmailAddr
.CC = CCAddr
.BCC = BCCAddr
.Subject = Subj
.Body = Msg
.Display

End With
End Sub

宜しくお願い致します。

A 回答 (6件)

こんにちは。



>Msg = Msg & Comment2 = "<BR>" & "<A HREF=""http://検索</b></A> "
落ち着いて!        
       「= 」が入ると、False になります。

'Compose message
Msg = "<font face=""Arial""><font size=2>"
Msg = Msg & Comment1 & "<BR><BR><BR>"
Msg = Msg & Comment2 & "<A HREF=""http://google.co.jp/""><b>goole検索</b></A> "
Msg = Msg & Comment3 & "<BR><BR><BR>"
Msg = Msg & Comment4 & "<BR><BR><BR><BR>"
Msg = Msg & "Best regards," & "<BR><BR>"
Msg = Msg & "</font></font>"



 "<A HREF=""http://google.co.jp/""><b>goole検索</b></A> "
            ↑            ↑
       リンク先アドレス     リンク名 (表示はずれるかもしれません)
    • good
    • 1
この回答へのお礼

一人でテンパッてしまってすみません。。。
そうですよね、=じゃだねですよね。。

'Compose message
Msg = "<font face=""Arial""><font size=2>"
Msg = Msg & Comment1 & "<BR><BR><BR>"
Msg = Msg & Comment2 & "<BR><BR><BR>"
Msg = Msg & Comment3 & "<A HREF=""http://**web:858/sites/~%7d""></b></A> " & "<BR><BR>"
Msg = Msg & Comment4 & "<BR><BR><BR><BR>"
Msg = Msg & "Best regards," & "<BR><BR>"
Msg = Msg & "</font></font>"

とやるとリンクではなく文章に。。。
上記マクロではシェアポイントのアドレスはhttpから始まって長々3行程で最後の文字が7dです。

PCにも疎かった私が、仕事で突然マクロを作成する業務を与えられ右も左もわからない状態で。。。
本を買って一から初めているのですが全然馴染めなくて、それでここのサイトでお世話になる事3回目なのですが、文字の羅列やらで本当にテンパってしまっているうえに何回も質問して本当にすみません。。。
Wendy02さんにも本当に感謝しております。あともう少し、お付き合いいただければ幸いです。
すみません・・・宜しくお願い致します!

お礼日時:2008/08/14 15:47

こんにちは。



>出来ました!!
>アドレスをテキスト形式で定義し直して

そうですね。そのほうが、コードでごちゃごちゃ書くよりも、確かです。

出来たそうで、良かったですが、こちらから、少しお聞きしたいのですが。
実は、こちらは、そうしたシステムを構築する話を聞かれたのですが、管理する側の問題もあって、やめておいたらと言ってしまったのです。

実は、私は、SharePointは、使ったことがありません。サーバー自体にセキュリティがある限りは、直ハイパーリンクを書いても、サーバーの中から外には出来ても、外から中には出来ないのではありませんか。試したことがないので、これに関しては、良く分かりません。

この回答への補足

お返事がないので大丈夫だったでしょうか?
締め切りボタンを押しますので、お礼をと思いまして。

どうもありがとうございました!!

補足日時:2008/08/18 15:34
    • good
    • 0
この回答へのお礼

こんにちは。

ネットやPCに関して詳しくないのできちんと回答できているかわからないですが・・・
私の今回のsharePointは社内のある部が所有・管理しているもので、そこに対してのアクセス権限を付与されていればアクセスできるものなので、おそらくWendy02さんが想像されているようなアドレス同士(ネット同士)ではありません。
なのでサーバーの中から外には出来ても、外から中には出来ないのではというのとは違い社内レベルです。

回答になっていますかね?
なっていなかったらすみません。。。

お礼日時:2008/08/16 15:43

こんばんは。



>リンクではなく文章に。。。
文章が対象とされてしまうということですね。

>Msg = Msg & Comment3 &"<A HREF=""http://**web:858/sites/~%7d""><b>「表示する内容」</b></A>"&"<BR><BR>"

「表示する内容(TextToDisplay)」ハイパーリンクで表示されるテキスト--が必要ですね。[<b>......</b></A>]
いらない場合は、同じ内容のアドレスとか。

なお、作成画面だけでは、Outlook の場合は、セキュリティが働いて、ハイパーリンクが成功しているのか分からないかもしれませんが、こちらで、実際の送信・受信して、ハイパーリンクが成功しているか確認していますから、まず間違いないです。

それと、
#3で書いた、「VB型で作る方法は、他の人の方法も、だいたい同じようです。」というのは、実は、有名なコンピュータの会社が書いていた、実際のコードを参考にしていますので、作り方自体は間違いはないはずです。

なお、Outlook VBAのマニュアルは、かなり値段の高いものですし、内容も慣れないせいか、かなり難しいです。VBAも、Access, Excel 以外は、なかなか手の届かない世界だと思います。私は、Office VBAに関わり過ぎて、一体、何に時間を費やしているのだろう、と思うことがあります。マニュアルも、Developer クラスのものは高い割には、そんなに真剣に読んでいません。いずれ、こういうものは、他に変わる日も近いと思うと、集中できません。

この回答への補足

出来ました!!
アドレスをテキスト形式で定義し直して、Wendyさんの教えていただいた通りにアドレスを繰り返して、いろいろやってみたら出来ました。

本当にありがとうございました!
ありがとうございました!

補足日時:2008/08/15 15:14
    • good
    • 1
この回答へのお礼

Wendy02さん

こんにちは。
同じアドレスを繰り返すのも試しても出来ません。。。

>「表示する内容(TextToDisplay)」ハイパーリンクで表示されるテキスト--が必要ですね。[<b>......</b></A>]

というのはどういう事でしょうか?
用語に詳しくないのでわからないのですが、
httpのアドレスの末尾に。<b>......</b></A>が必要で、なおかつ....部分の名前が必要という事でしょうか?
シェアポイントではどこを見ればわかりますでしょうか?

すみません。

お礼日時:2008/08/15 14:41

こんにちは。


例えば、

CommentAD = "<BR>" & "<A HREF=""http://google.co.jp/""><b>goole検索</b></A> "

HyperLink は、こんなものを、Comment の中に入れてやれば良いわけです。VB型で作る方法は、他の人の方法も、だいたい同じようです。コードだけをみると、少し分かりにくいですね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速やってみたのですが

'Compose message
Msg = Msg & Comment1 & "<BR><BR><BR>"
Msg = Msg & Comment2 = "<BR>" & "<A HREF=""http://検索</b></A> "
Msg = Msg & Comment3 & "<BR><BR><BR>"
Msg = Msg & Comment4 & "<BR><BR><BR>"
Msg = Msg & "Best regards," & vbCrLf & vbCrLf
'Create Mail Item
Set mItem = OutlookApp.CreateItem(olMailItem)
With mItem
.To = EmailAddr
.CC = CCAddr
.BCC = BCCAddr
.Subject = Subj
.HTMLBody = Msg
.Display

End With
End Sub

でやってみたところ
文字がArialではなくゴシックになっていて、リンクもリンクがとけて通常の文章になっており、Comment1が表示されません。

私のマクロは、どこが間違っているのでしょうか?

すみません・・・・

お礼日時:2008/08/13 18:06

こんにちは。



>メールのフォントをArialにしたい場合は設定はなんと書けばいいのでしょうか?

前回の、テキスト形式のメールには、基本的には、フォントの種類というものが存在しないので、相手の設定まかせですが、こちらでフォントの種類の指定が必要なら、HTML形式ファイルにしないといけません。

そこで以下の部分は変わります。'Arial' は、Windows のデフォルトのフォントの種類で、もっとも確実なフォントの種類ですね。フォントファイルが入っていなくても表示するだったと思います。フォントサイズは、2 =>10, 3 =>12 という大きさになります。


'Compose message
Msg = "<font face=""Arial""><font size=2>"
Msg = Msg & Comment1 & "<BR><BR><BR>"
Msg = Msg & Comment2 & "<BR><BR>"
Msg = Msg & Comment3 & "<BR><BR><BR>"
Msg = Msg & Comment4 & "<BR><BR><BR><BR>"
Msg = Msg & "Best regards," & "<BR><BR>"
Msg = Msg & "</font></font>"
'Create Mail Item
Set mItem = OutlookApp.CreateItem(olMailItem)
With mItem
.To = EmailAddr
.CC = CCAddr
.BCC = BCCAddr
.Subject = Subj
.HTMLBody = Msg 'ここを変える
.Display

End With
    • good
    • 0
この回答へのお礼

早々のお返事ありがとうございます。
試してみましたら、別の問題が出てきまして、
Comment1、3は普通の英語なので、今教えていただいた設定でうまくいったのですが
Comment2が、リンク先(社内で使用しているシェアポイントのhttp://から始まっているアドレスになりますが、そこがアドレス扱いではなく普通の英語文のようになってしまってリンクが溶けています。

Msg = Msg & Comment1 & "<BR><BR><BR>"
Msg = Msg & Comment2 & Comment2 & vbCrLf & vbCrLf
Msg = Msg & Comment3 & "<BR><BR><BR>"
とComment2だけ変更するのかなとやってみたのですが、出来ませんでした。

どうすれば宜しいでしょうか?
度々すみません。。。

どうぞ宜しくお願い致します。

お礼日時:2008/08/13 16:01

こんばんは。



この行がヘンです。
>Body = Range("Comment1") & ("Comment2") & ("Comment3")

Comment1 = Range("Comment1").Value
Comment2 = Range("Comment2").Value
Comment3 = Range("Comment3").Value
としておいて、

Msg = Msg & Comment1 & vbCrLf & vbCrLf
Msg = Msg & Comment2 & vbCrLf & vbCrLf
Msg = Msg & Comment3 & vbCrLf & vbCrLf
Msg = Msg & "Best regards," & vbCrLf & vbCrLf

とすればよいと思います。

Body という変数はいらないです。(Body という変数は予約語としてバッティングしませんが、こうした変数名は使わないほうがよいです。)

それと、一般的に、Nameオブジェクトの名前-定義-登録は、VBAでは、ワークシートから、引っ張って使わないほうがよいです。トラブル発生の元になります。名前-定義は、一見、固定のように見えますが、いくつかの条件が重なると、移動してしまいます。一回トラブると、さっぱりエラーの原因が読めなくなります。

明示的に、Range("A1") などとしたほうがよいです。ここの掲示板でいろんなトラブルを見てきて言っているのですが、いくら私が言っても、初級レベルの人ですと、耳を貸さない人がほとんどですが、注意だけは与えておきます。説明すると、難しくなります。
    • good
    • 0
この回答へのお礼

Wendy02さん
ありがとうございます。ご指摘いただきましたように変更してみました。きちんと出来ました!ありがとごいざます。
あと一点だけお伺いしたいのですが、メールのフォントをArialにしたい場合は
設定はなんと書けばいいのでしょうか?

名前-定義-登録、きちんと書き換えました!下記に載せますね。

Sub SendEmail()

Dim OlApp As Outlook.Application
Dim mItem As Outlook.MailItem

Dim cell As Range
Dim Subj As String
Dim EmailAddr As String
Dim Recipient As String
Dim Msg As String
Dim Message As String
Dim Sender As String
Dim Comments As String
Dim Comments2 As String
Dim report As String

Worksheets("Sheet1").Activate

'Create Outlook object
Set OutlookApp = New Outlook.Application
'Get the data
Subj = Range("I10")
EmailAddr = Range("I4")
CCAddr = Range("I7")

Comment1 = Range("I13").Value
Comment2 = Range("I15").Value
Comment3 = Range("I17").Value
Comment4 = Range("I20").Value

'Compose message
Msg = Msg & Comment1 & vbCrLf & vbCrLf & vbCrLf
Msg = Msg & Comment2 & vbCrLf & vbCrLf
Msg = Msg & Comment3 & vbCrLf & vbCrLf & vbCrLf
Msg = Msg & Comment4 & vbCrLf & vbCrLf & vbCrLf & vbCrLf
Msg = Msg & "Best regards," & vbCrLf & vbCrLf
'Create Mail Item
Set mItem = OutlookApp.CreateItem(olMailItem)
With mItem
.To = EmailAddr
.CC = CCAddr
.BCC = BCCAddr
.Subject = Subj
.Body = Msg
.Display

End With
End Sub

お礼日時:2008/08/13 13:47

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

このQ&Aを見た人はこんなQ&Aも見ています