お詳しい方 ご教授をお願いします。
下記のコードを組んだのですが、メールをHDML形式で本文にどうしても指定セルのURLをリンク状態で記載されませ。
例としてセルB11にURL先が記載されているという条件でどうのようにコードを組むか
アドバイスを頂けないでしょうか。
Sub sumple1_Click()
'To 抽出~メール起動------------------------------------------------------
Dim oApp As Object
Dim oMail As Object
Dim i As Long, tmpto As String
Application.ScreenUpdating = False
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)
'宛先
For i = 2 To Cells(Rows.Count, "G").End(xlUp).row
If Range("G" & i).Value <> "" Then
If tmpto = "" Then
tmpto = Range("G" & i).Value
Else
tmpto = tmpto & "," & Range("G" & i).Value
End If
End If
Next i
If tmpto <> "" Then
With oMail
.To = tmpto
'To 抽出終わり----------------------------------------
'件名
.Subject = Range("B9").Value
'本文
'内容抽出-------------------------------------------
.Body = Range("B10").Value
.Display '表示
'.Send '送信
End With
End If
Application.ScreenUpdating = True
End Sub
No.8ベストアンサー
- 回答日時:
こんばんは。
>セルB11のURLが本文では青字(リンク状態)にどうしてもなりませんでした。
Outlook のオプション設定で、ディフォルトのメール形式がテキストに設定してあるんだと思いますよ。
全体を再掲します。下記のソースでお試し下さい。
# HTMLソースをVBAで書くのは面倒なので
# リンクはOutlookにまかせてます
Sub sumple1_Click()
'Outlook/CreateObject 定数
Const olMailItem = 0 'メール
'Outlook/CreateItem 定数
Const olFormatPlain = 1 'テキスト形式メール
Const olFormatHTML = 2 'HTML形式メール
'To抽出 -----------------------------------------------
Dim i As Long
Dim tmpto As String
'宛先
For i = 2 To Cells(Rows.Count, "G").End(xlUp).Row
If Range("G" & i).Value <> "" Then
If tmpto = "" Then
tmpto = Range("G" & i).Value
Else
'■↓変更 アドレス区切り文字は「;」
tmpto = tmpto & ";" & Range("G" & i).Value
End If
End If
Next i
If Len(tmpto) = 0 Then Exit Sub '宛先がなければ終了
'本文を作成 -------------------------------------------
Dim body_text As String
body_text = Range("B10").Value _
& Range("B11").Value
'Outlookを起動してメール作成 --------------------------
Dim oApp As Object 'Outlook.Application
Dim oMail As Object 'Outlook.MailItem
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(olMailItem)
With oMail
.BodyFormat = olFormatHTML '<--■追加 HTML形式
.To = tmpto '宛先
.Subject = Range("B9").Value '件名
.Body = body_text '本文
.Display 'ブレビュー
'.Send '送信
End With
'他アプリを操作したらオブジェクトを必ず破棄
'オートメーションエラーの原因になります
Set oMail = Nothing
Set oApp = Nothing
End Sub
No.5
- 回答日時:
URLリンクだけなら HTML メールである必要はありませんね。
テキスト形式でも URL はリンクになります。
補足からご質問での実現したい事の課題は、複数のセルにある値をいかに連結するかにあると判断しました。
テキストはB10またはB11セルにあるそうですが、VBAソースからはその痕跡が見られなかったので。
余談ですが、改行コード vbNewline は Windows だと vbCrLf と同意です。
No.4
- 回答日時:
こんにちは
>HTMLメールを本文にどうしても指定セルのURLをリンク状態で記載されませ。
HTML形式の例
'To 抽出終わり----------------------------------------
Dim strHTML As String
If tmpto <> "" Then
If Range("B11") <> "" Then
strHTML = Range("B10").Text & "<br>" _
& "<a href=" & Range("B11").Text & "> 参考URL</a>"
Else
strHTML = Range("B10").Text & "</a>"
End If
With oMail
'件名
.Subject = Range("B9").Value
.To = tmpto
.CC = ""
'本文
.HTMLBody = "<b>宛先各位</b>" _
& "<br><br>" _
& " 初めに" _
& "<br><br>" _
& "要件<br>" _
& strHTML _
& "<br><br>" _
& "<a href=""https://oshiete.goo.ne.jp/qa/13084470.html"">教えて!goo</a>"
'.Attachments.Add ("C:\Users\xx\添付ファイル.pdf")
.Display '表示
'.Send '送信
End With
End If
If Range("B11") <> "" Thenの条件は適当
文字列作成 (文字列 改行 リンク文字(非表示) 表示文字)
strHTML = Range("B10").Text & "<br>" _
& "<a href=" & Range("B11").Text & "> 参考URL</a>"
URLだけを表示したい場合は
strHTML = Range("B10").Text & "<br>" _
& "<a href=" & Range("B11").Text & ">" & Range("B11").Text & "</a>"
No.3
- 回答日時:
ごめんなさい。
レイトバインドなの忘れてました。#2の下記部分を差し替えて下さい
Dim oApp As Outlook.Application ' Object
Dim oMail As Outlook.MailItem ' Object
↓
Dim oApp As Object
Dim oMail As Object
No.2
- 回答日時:
HTML で本文を書いてない=テキスト形式メールであるなら
→#1 ■VBA ソースについて はスルーして下さい
>この併せて表示というのがなかなかうまくいかず難儀しています。
単純に文字列を連結して Body に指定すれば良いと思いますよ。
改行は vbNewline です。ソース全体を少し直しました。
Sub sumple1_Click()
'Outlook/CreateObject 定数
Const olMailItem = 0 'メール
'Outlook/CreateItem 定数
Const olFormatPlain = 1 'テキスト形式メール
Const olFormatHTML = 2 'HTML形式メール
'To抽出 -----------------------------------------------
Dim i As Long
Dim tmpto As String
'宛先
For i = 2 To Cells(Rows.Count, "G").End(xlUp).Row
If Range("G" & i).Value <> "" Then
If tmpto = "" Then
tmpto = Range("G" & i).Value
Else
tmpto = tmpto & "," & Range("G" & i).Value
End If
End If
Next i
If Len(tmpto) = 0 Then Exit Sub ’宛先がなければ終了
'Outlookを起動してメール作成 --------------------------
Dim oApp As Outlook.Application ' Object
Dim oMail As Outlook.MailItem ' Object
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(olMailItem)
'B10セル、B11セルの内容を連結して本文作成
Dim body_text As String
body_text = Range("B10").Value & vbNewLine _
& Range("B11").Value
With oMail
.To = tmpto '宛先
.Subject = Range("B9").Value '件名
.Body = body_text '本文
.Display 'ブレビュー
'.Send '送信
End With
'重要
'他アプリを操作したらオブジェクトを必ず破棄
'オートメーションエラーの原因になります
Set oMail = Nothing
Set oApp = Nothing
End Sub
No.1
- 回答日時:
こんにちは。
下記ポイントを確認してみて下さい。
■Outlook 側の設定はどうなっていますか?
https://support.microsoft.com/ja-jp/office/f361c …
■一斉配信は、BCC欄(またはCC欄)を通常使います。
配信数によっては、、ですが、TO欄で大丈夫?
(例)BCC欄を使う場合 oMail.BCC = tmpto
■VBA ソースについて
下記で試してみて下さい。
'内容抽出-------------------------------------------
.BodyFormat = 2 '追加 2:olFormatHTML
'.Body = Range("B10").Value '下行に訂正
.HTMLBody = Range("B10").Value 'B10? B11セル?
■最大発信数について
本件の目的、何件のメール送信になるのかが明記されてません。
メールプロバイダーは1日で送れるメール最大数を定めています。
これは迷惑メール防止、サーバーへの過度な負荷予防の観点から。
この点、問題はありませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
ちょっと先の未来クイズ第5問
日本漢字能力検定協会が主催し、12月12日に発表される、2024年の「今年の漢字」に選ばれる漢字一文字は何でしょう?
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本
Visual Basic(VBA)
-
5
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
6
Excel VBA メール作成について Excelで作った表を写真のハイパーリンクの後に 図形にして
Visual Basic(VBA)
-
7
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
8
Outlookのメールを送信するマクロ
Word(ワード)
-
9
ExcelVBAでフォルダへのハイパーリンクを
Excel(エクセル)
-
10
エクセルからOutlookメールを起動させて本文にハイパーリンクを張らせたい
Excel(エクセル)
-
11
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
12
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
Excel 文字列から6桁の数値の抽出
-
PDFファイル/抽出許可され...
-
2ちゃんのレス抽出の方法
-
ACCESSのクエリー抽出条件にIIF...
-
access クエリ yes/no型のクエ...
-
音楽をDVDから抽出したいのです...
-
EXCEL関数 MAX関数と複合的に...
-
awkでスラッシュがある動的変数...
-
X-Ripperというフリーウェアに...
-
Access サブフォームでの選択行...
-
Access2000、これはいったい・...
-
アクセスでコードを入れると名...
-
DoCmd.SearchForRecord が動か...
-
Accessのサブフォーム内で連続...
-
ACCESSでVBAから選択クエリの抽...
-
スクロールバーをVBAで操作したい
-
ExcelのComboboxでマウスのスク...
-
前のレコードの値を自動で入れたい
-
Accessでのフォーム表示がうま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
PDFファイル/抽出許可され...
-
access クエリ yes/no型のクエ...
-
ACCESSのクエリー抽出条件にIIF...
-
Excel 文字列から6桁の数値の抽出
-
「パラメータが少なすぎます。3...
-
未審査請求包袋抽出表作成とは...
-
【AccessVBA】レコードセットOp...
-
X-Ripperというフリーウェアに...
-
AccessのWHERE句において、変数...
-
Accessの選択クエリの抽出条件...
-
アクセス 同じフィールド(テキ...
-
ACCESS クエリ 条件以外のレ...
-
PDFファイルから特定の文字を検...
-
Access チェックボックスを利用...
-
コンボボックス全ての値を取得...
-
エクセル関数で住所から丁目番...
-
アクセスのテキストボックスでO...
-
ACCESSのフォームからレポート...
-
エクセル VBA メール本文に指定...
おすすめ情報
回答いただきありがとうございます。Toの宛先ですが最大5名程度を考えていたので BCCについてはなにも考えていませんでした。今後宛先が増えるようでしたら頂いたアドバイスを参考にさせていただきます。
また、質問事項について説明不足でしたので、下記に質問事項を追加させてもらいます。
現在の悩みは
セル10に本文として下記URLをご参照ください。
などの定型文が記載されており。
セル11に対象のURLが記載さている条件で本文に定型文+URLリンクを表示させたいと考えています。 この併せて表示というのがなかなかうまくいかず難儀しています。
アドバイスありがとうございます。
ご教授いただいたコードをそのまま反映させたところ本文とURLは連結して表示がされるようになったのですが、セルB11のURLが本文では青字(リンク状態)にどうしてもなりませんでした。
連結させる際のコードをもう少し弄ればいけそうな気がしますが、色々自分なりに努力したのですが、なかなかうまくいかず・・
もしよろしければ、不具合についてアドバイスを頂けると助かります。