• ベストアンサー

VBAでメール本文へのハイパーリンク挿入

すみませんが質問させて下さい。エクセルVBAにてセルの文章をメール本文へ転記させているのですが、その中の1行がURLとなりハイパーリンクにしたいと思っています。 例えばmailbody = Range("A1")で本文を挿入した場合、A1に”いつもお世話になっています。ファイルはhttp://xxxxxを参考下さい"のhttp://xxxxxの部分だけハイパーリンクにしたいのですがご教授頂けませんでしょうか。宜しくおねがいいたします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.1

VBAは Outlook.MailItem名.HTMLBody=Range("A1") で A1に いつもお世話になっています。ファイルは <a href=https://okwave.jp/>OKWAVE</a>を参考下さい としてください。とりあえずokwaveとしてます。

twiceexid
質問者

補足

いつもありがとうございます。 Outlook.MailItem名.HTMLBody=Range("A1") ですとエラーになります。名を消してもリンクにならず文字がそのまま本文になってしまいます。すみませんが宜しくお願い致します。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

(1)ExcelVBAの標準」モジュールの下記コードから(に、よって)起動する (2)受信には、Outlookを使う (3)ハイパーリンクに飛ぶのは、そのブルー文字の箇所で、CTR+マウスでクリック という例で(良ければ)、 Excelのブックの標準モジュールに Sub test2() Dim strBody As String Filename = "ハイパーリンクの貼り方???" strBody = "OKWAVE質問" Set myOL = CreateObject("Outlook.Application") Set myMAIL = myOL.CreateItem(0) With myMAIL .to = "XXXX@XXXXXX.ne.jp" <--自分のメイルアドレスを入れてテスト .Subject = Filename .body = strBody & "<A HREF=""https://oshiete.goo.ne.jp/qa/5441173.html""><b>goo検索</b></A>" .display '.send End With Set myMAIL = Nothing Set myOL = Nothing End Sub 実行。 Outlookの受信トレイで確認し、ハイパーリンク文字のところで、 CTR+マウスでクリックしてください。ここまではテスト済み。  私が参考にした記事(Wendyさんの回答)が出てくれば、私の目標は達成です。 「二重ダブルクオートで囲む」がポイント。 == 私もこの点に熟達してないので、さらなる疑問には答えられないかもしれないが、 ・HTMLメールを使う必要がる?<ーー>テキストメール ・本文を書く場所、メッセージ(台紙)がハイパーリンク文を受け付ける仕組みのものでないとダメなようで、テキストメールはダメな(?)ようで、どんなソフトの台紙でも、アドレスを書けばよいという、当たり前ではないようだ。

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.2

Outlook.MailItem名.というのは たとえば Dim MI As Outlook.MailItem Set MI = OL.CreateItem(olMailItem) としていた場合 MI.HTMLBody = Range("A1") になりますがその状態にしてもリンクにならないとうことですか? ちなみに、送信する前はCtrl+クリックじゃないとリンク先は開きません。 A1にリンクの部分は <a href=http://xxxxx>こちらをクリック</a> みたいにしてますよね。

関連するQ&A

  • エクセルVBA 画像にハイパーリンク

    VBA初心者です。 A1からA100まで、サムネイル画像があります。 B1からB100までのセルに、ハイパーリンクURLがあります。 このハイパーリンクURLを、A1からA100までのサムネイル画像(図の番号が順不同)にいれたいので、よい方法をご教授ねがいます。

  • ExcelVBAからメール本文を取得できません

    ExcelのVBAからOutlookのメール本文を取得できません。 エクセル上のデータを自動でOutlookのメール本文にとばすプログラムを作成しています。 Outlookを開き、宛先、件名までは転記できるのですが、本文転記の時にエラーがでます。 <本文転記のプログラム> If Range("A1") = 1 Then .body = Range("B1") ElseIf Range("A1") = 2 Then .body = Range("B1") & vbCrLf & Range("B2") ElseIf Range("A1") = 3 Then .body = Range("B1") & vbCrLf & Range("B2") & vbCrLf & Range("B3") Else .body = Range("B1") & vbCrLf & Range("B2") & vbCrLf & Range("B3") & vbCrLf & Range("B4") End if <エラー内容> (1)A1=1以外はエラーが出ない (2)A1=1の時にエラーが出るPCと、エラーが出ず正常に動くPCがある。 ※何れのPCもWindows10 <質問内容> エラーがでるPCと出ないPCがあるのはなぜでしょうか。 エラーが出ないようにするにはどうしたらよいでしょうか。 ご教示よろしくお願い致します。

  • vbaのハイパーリンク

    vbaでURLをハイパーリンク化しましたが、そのハイパーリンクを共有しているエクセルに貼り付けたいですが、共有のためハイパーリンクが無効になってしまいます。 これはもう共有を解除するしか手段はないでしょうか?

  • VBAでエクセルの文をメールに転記

    当方エクセル2016使用しています。 エクセルのVBAで、outlookのメールを自動作成したいです。 エクセルの E2に宛先 E3に件名 E4~E6に本文が入っており、 下記VBAでoutlookに各データが入る様にはできました。 しかしエクセルでは文字のサイズや色が異なっているものが、 outlook本文に反映されません。 (1行単位だったり、文字単位だったりでサイズや色が異なる) エクセルに表示されているそのままを outlook本文に表示させるにはどうしたら良いでしょうか。 ******************************** Sub Macro1() Dim toaddress As String Dim subject As String Dim mailbody As String Dim outlookObj As outlook.Application Dim mailItemObj As outlook.mailItem toaddress = Range("E2").Value subject = Range("E3").Value mailbody = Range("E4").Value mailbody = mailbody & vbCrLf & Range("E5").Value mailbody = mailbody & vbCrLf & Range("E6").Value Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = olFormatHTML mailItemObj.To = toaddress mailItemObj.subject = subject mailItemObj.body = mailbody mailItemObj.display Set outlookObj = Nothing Set mailItemObj = Nothing End Sub

  • エクセルVBAセルの選択、挿入でズレた時に自動修正

    エクセルのVBAで、セルA1を選択します Sub Macro1() Range("A1").Select End Sub 別の作業でA列に1行挿入すると 自動的にセルB1を選択してくれないと困るのですが、どうすれば良いのですか?

  • エクセルのハイパーリンクについて

    エクセルに入力されたURL(リンクされていない)に、 一括でハイパーリンクをはることは可能でしょうか?? 例)   A列  http://○○○  http://△△△  http://□□□    ↓  上記のセルをすべて選択して、一括でハイパーリンク もちろん、一つ一つは可能ですが、実際は5000行ほどあります・・・ 唐突な内容ですが、よろしくお願い致します。

  • エクセル・ハイパーリンク

    エクセルのハイパーリンクについて質問です。 ハイパーリンクでリンク先を 例)c:\Program Files\office とリンクさせたいとき、エクセルのA1のセルにProgram Files、B1のセルにofficeと書いてそれを参照し、c:\A1\B1 のような感じでできる方法はないのでしょうか? またVBA等でマクロを組んで似たようなものを作る事はできるのでしょうか? 稚拙な文章で申し訳ないですがよろしくお願いします。

  • ハイパーリンクの参照セルのズレは防げるか?

    Excel 2002 を使用しています。 1.Sheet1 のセル C3 および Sheet2 のセル A40 に文字列 CRCN-40094 が入力されてい   ます。 2.Sheet1 のセル C3 をアクティブにして、[挿入]→[ハイパーリンク]→[このドキュメ   ント内]を選択 3.[またはドキュメント内の場所]窓内の“Sheet2”を選択した後で、[セル参照を入力し   てください]ボックス内に A40 を入力して[OK]をクリック 此れで、Sheet1!C3 は Sheet2!A40 にハイパーリンクされた状態になります。 同様の操作で、Sheet1 のセル C4、C5 を Sheet2のセル A56、A70 にそれぞれハイパーリンクさせます。ここで… 4.Shee2 の1行目に1行挿入 この場合、Sheet1 のセル C3、C4、C5 のハイパーリンク先も Sheet2 の セル A41、A57、A71 にそれぞれ1行(ステップ4で挿入した行数分)下に移動して欲しいのですが、そうはなりません。何か簡単な方法はありますか?

  • 【VBA】ハイパーリンク付の項目をフィルタで抽出後に転記する方法

    現在、データベースに検索をかけて抽出された項目を別シートに転記するプログラムを組んでいます。 そこで、フィルタ後に表示された可視セルをコピーで転記すると、データベース内に貼ってあるハイパーリンクがなくなってしまい困っています。 <例> 果物   注文個数   業者サイト名(ハイパーリンクあり) りんご  1個      スーパーA店 みかん  2個      スーパーB店 バナナ  5個      スーパーB店 りんご  3個      スーパーC店 例えば、上記のようなデータからフィルタで「果物=りんご」を検索し、その結果の行を別のシートに転記する場合に「業者サイト名」に貼り付けてあるハイパーリンクも同時に転記する場合のプログラムをご教示願えませんでしょうか。 以前作成したハイパーリンクをコピーするプログラムでは、If文でハイパーリンクの有無を確認してから、コピーを行っていましたが、それをさらに可視セルかどうかを確認して行うとなるとどうしていいか分からなくなっています。 VBA初心者のため、少し複雑なプログラムになると書くことができなくて困っており、知見のある方にアドバイスをいただければと思います。

  • ハイパーリンクの挿入でアドレス欄に張り付け出来ない

    Excel 2003です。セルで右クリックしメニューからハイパーリンクをクリック、ハイパーリンクの挿入画面は表示されますが、下にあるアドレス欄にアドレスを張り付けようとして右クリックしてもメニューが出ません。あらかじめURLのアドレスはコピーしてあります。念の為に任意のセルで右クリックするとメニューが出て、張り付けは可能です。対処方法を教えて下さい。

専門家に質問してみよう