エクセルVBAでメール作成の際にファイルサーバのリンク貼り付けがうまくいかない問題

このQ&Aのポイント
  • エクセルVBAでのメール作成において、ファイルサーバのリンク貼り付けがうまくいかない問題が発生しています。
  • 本文のフォント色を変更し、リンク貼り付けを行うためには本文をhtml形式に変換する必要がありますが、これがうまくいかない状況です。
  • 対処方法をご教示いただきたく、お願いいたします。
回答を見る
  • ベストアンサー

エクセルVBAでのメール作成について

お世話になります。エクセルVBAでのメール作成で、メール本文のファイルサーバのリンク貼り付けがうまくいきません。本文のフォント色を変更し、かつリンク貼り付けを行うためhtml形式に本文を変換すると、うまくいかなくなります。 対処方法をご教示頂きたく、どうぞ宜しくお願い致します。 Sub mail_try() 'Outlookオブジェクト生成 Dim OL As Outlook.Application Dim MI As Outlook.MailItem Set OL = CreateObject("Outlook.Application") Set MI = OL.CreateItem(olMailItem) 'メール各設定 MI.SentOnBehalfOfName = "" '差出人 MI.To = "" 'TO MI.Cc = "" 'CC MI.Bcc = "" MI.Subject = "【リンク先送信】" '件名 Dim buf As String buf = ThisWorkbook.Path '本文 MI.Body = "<font color = ""#ff0000"">" & "リンク先を送信致します。" & "</font>" _ & "<br>" & "<br>" & _ "<br>" & buf & "\" & "<br>" _ & "<br>" & "<br>" & "以上、宜しくお願い致します。" 'メール表示 MI.display MI.HTMLBody = MI.Body 'オブジェクト解放 Set OL = Nothing Set MI = Nothing End Sub

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

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

MI.Body = "<font color = ""#ff0000"">" & "リンク先を送信致します。" & "</font>" _ & "<br>" & "<br>" & _ "<br>" & "<a href= " & buf & "\" & "/> " & buf & "</a>" & "<br>" _ & "<br>" & "<br>" & "以上、宜しくお願い致します。" で試してみてください。

vesper580109
質問者

お礼

kkkkkmさん お世話になります。 ご教示頂いた内容にて解決致しました。本当に助かりました。感謝致します。 タグの使い方について勉強してみます。 ありがとうございました。

その他の回答 (1)

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

No1でうまくいかなかった場合 ThisWorkbook.PathにたいしてURL エンコードを試してみてください。 UrlエンコードをするVBAマクロ https://qiita.com/pocket8137/items/996392e35d4426c4b4d6

vesper580109
質問者

お礼

kkkkkmさん 追記ありがとうございました。 >UrlエンコードをするVBAマクロ こちらも試してみたいと思います。

関連するQ&A

  • エクセルでOutlookのメールを作成

    エクセルでOutlookのメールを作成しようとしています。 一応、以下のコードでできるようです。 質問は、メール本文中の ABC という文字だけを赤い太字にする方法です。教えてください。 Sub test01() Dim mi As Object ' MailItem Dim wdDoc As Object ' Word.Document Dim olApp As Object ' Outlook.Application Set olApp = CreateObject("Outlook.Application") Set mi = olApp.CreateItem(0) mi.To = "test@abc.co.jp" ' 送り先 mi.BodyFormat = 2 ' メールを HTML 形式にする mi.Display ' メールを表示する Set wdDoc = olApp.ActiveInspector.WordEditor ' メールの Word エディタを取得する wdDoc.Windows(1).Document.Range.Text = "本文本文本文本文本文1" _ & vbCrLf & "本文本文本文本文本文2" _ & vbCrLf & "本文ABC本文本文3" With wdDoc.Windows(1).Document.Range.Font .Name = "Meiryo UI" ' メール本文のフォントを "Meiryo UI" .Size = 11 ' フォントサイズを 11 に設定する End With End Sub

  • エクセルVBAでメール本文中に画像を挿入する方法

    エクセルVBAを使ってアウトルックメールにてメール送信するマクロを作っています。 本文中に画像を挿入する方法をググってますがなかなか出てきません。添付ファイルではなく、本文と本文の間に画像を差し込むイメージです。 メール送信先、本文は同じエクセルのContentsシート、画像はPictシートに格納しています。 Option Explicit Sub SendMail_HTML() Dim contents As Worksheet Dim maillist As Worksheet Dim mailaddress As String, honbun1 As String, honbun2 As String, mailbody As String, strstyle As String Dim i As Long Set contents = ThisWorkbook.Worksheets("Contents") Set maillist = ThisWorkbook.Worksheets("List") ' Picture Dim pict_sheet As Worksheet Set pict_sheet = ThisWorkbook.Worksheets("pict_sheet") 'プログラム3|Outlookアプリケーションを起動 Dim outlookObj As Outlook.Application Dim myMail As Outlook.MailItem Set outlookObj = CreateObject("Outlook.Application") For i = 2 To 3 ' Email and name setting from Content Sheet client_name = maillist.Range("B" & i).Value mailaddress = maillist.Range("C" & i).Value Set myMail = outlookObj.CreateItem(olMailItem) 'Mail content setting myMail.BodyFormat = 2 myMail.To = mailaddress myMail.Subject = contents.Range("B3").Value honbun1 = Replace(contents.Range("B6").Value, vbLf, "<br>") Dim insp As Outlook.Inspector Set insp = myMail.GetInspector If insp.EditorType = olEditorWord Then Dim doc As Word.Document 'Microsoft Wordを参照 Set doc = insp.WordEditor Dim wrange As Word.Range Set wrange = doc.Range(0, 0) 'カーソルを先頭に 'wrange.Text = honbun1 wrange.MoveEnd Word.WdUnits.wdStory 'カーソルを最後に wrange.Start = wrange.End pict_sheet.Shapes("pict1").Copy 'Pict sheetに入っているpict1を指定 wrange.Paste End If honbun2 = Replace(contents.Range("B8").Value, vbLf, "<br>") myMail.HTMLBody = honbun1 & hoonbun2 myMail.Display 'Send mail 'mymail.Display 'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) myMail.Save '下書き保存 myMail.Send maillist.Range("D" & i).Value = "Sent:" & Now() ' Release object Set myMail = Nothing Next 'プログラム12|オブジェクト解放 Set myMail = Nothing Set outlookObj = Nothing End Sub

  • 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で作成するメール(開封確認の要求設定)

     エクセルにて、毎日送信する定型メールを作成するマクロを作成しましたが、作成したメールに開封確認の要求を追加する設定がわかりません。エクセルのシートから要求の有無を指定させたいと考えています。もし、ご存じの方がいましたら、お知恵を拝借いただきたいです。  なお、エクセルでマクロを起動し、Outlook.Applicationのオブジェクトでメールを作成して、シートの内容を各設定に組み込むという形をとっています。OSはWindowsXP、Office2007のOutlookでメールを作成しています。  投稿は今回が初めてで不慣れな点がありますが、不備等をご指摘いただければ幸いです。宜しくお願い致します。 -----------------------以下マクロの内容------------------------ Option Explicit Sub MAKE_MAIL_ITEM() Dim Tool As Workbook Dim Sheet As Worksheet Dim myoApp As Object Dim myoExp As Object Dim myNameSpace As Object Dim myFolder As Object Dim objMAIL As Object Dim SendDay As String Set Tool = ThisWorkbook Set Sheet = Tool.ActiveSheet ' Outlookアプリのオブジェクト設定 Set myoApp = CreateObject("Outlook.Application") ' Outlookの規定フォルダをオブジェクト設定 Set myNameSpace = myoApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) ' Outlookで表示されているフォルダのアクティブ設定 Set myoExp = myoApp.ActiveExplorer ' アクティブフォルダがなければOutlook起動(表示) If myoExp Is Nothing Then myFolder.display End If ' メールアイテムの作成 Set objMAIL = myoApp.CreateItem(0) ' 日付の取り込み SendDay = Year(Date) & "年" & Month(Date) & "月" & Day(Date) & "日" ' メールの表示 objMAIL.display ' 宛先設定 objMAIL.To = Sheet.Cells(2, 2) ' CC設定 objMAIL.CC = Sheet.Cells(3, 2) ' Subjectを設定([$#Today#$]があれば日付に変換) objMAIL.Subject = Replace(Sheet.Cells(4, 2), "[$#Today#$]", SendDay) ' 本文の代入([$#Today#$]があれば日付に変換) objMAIL.Body = Replace(Sheet.Cells(5, 2), "[$#Today#$]", SendDay) End Sub

  • エクセルVBAでメールに画像添付

    エクセル2010です。 以下のようなVBAでOutlookメールを作成しているのですが、本文の中に画像を添付する方法がわかりません。 下記で言えば strMOJI(0) と strMOJI(1) の間に画像を張り付けたいのです。 画像ファイルを添付するのではなく画像として見えるようにしたいのです。 どのように書けばよろしいでしょうか? Sub TEST001()   Dim oApp As Object   Dim objMAIL As Object   Dim strMOJI(1) As String   On Error Resume Next   Set oApp = GetObject(, "Outlook.Application")   On Error GoTo 0   If oApp Is Nothing Then     Set oApp = CreateObject("Outlook.Application")   End If   Set objMAIL = oApp.CreateItem(0)   strMOJI(0) = "こんにちは!" & vbCrLf & _   "テストです。。" & vbCrLf & _   "よろしくおねがいします。" & vbCrLf   strMOJI(1) = vbCrLf & _   "以上です。" & vbCrLf & _   "ABC株式会社" & vbCrLf & _   "emaxemax"   objMAIL.To = ""   objMAIL.CC = "xxxx@xxx.co.jp"   objMAIL.Subject = "テスト"   objMAIL.Body = strMOJI(0) & strMOJI(1)   objMAIL.Display End Sub

  • ExcelからMailをしたとき漢字が出ない

    Excel上にあるセルの内容をメールにて送りたくて次のようなマクロでメールしたときに本文(.body)の文字が英数は出るのですが漢字が出ません どこを直せばよいか教えてください Sub Mail_01() Dim OutApp As Object Dim OutMail As Object Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) With OutMail .To = Sheets("MAIN").Range("U32") ’アドレスの入力 .CC = "" .BCC = "" .Subject = Sheets("MAIN").Range("U33") ’題目の入力 .Body = Sheets("MAIN").Range("U34") '.Attachments.Add ActiveWorkbook.FullName .Send End With Set OutMail = Nothing Set OutApp = Nothing 'Application.Quit End Sub それと.sendでダイアログが現れます。これを出なくしてプログラムを続けたいのですかどうすれば良いのでしょうか 2点よろしくお願いします

  • マクロ Outlook送信メールにエクセルの表を貼り付ける方法

    こんにちは。 送りたいメールの形は 数行の文章のあとに、表を貼り付け、また数行の文章という形式です。 Outlookメールでメールを立ち上げて Comment1と2は文章ですのでエクセルのコラムを引っ張ってくるようにしているのですが、 Comment3部分に別のエクセルにある表をメタ貼りし、Comment4でまた文書を引っ張ってくるとさせたいのですが Comment3部分の動きが出来ません。 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 '日付の設定 DMY = Range("b_date") DM = Format(Range("b_date").Value, "mmdd") Worksheets("mail").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("B69") & "_" & DM EmailAddr = Range("B63") CCAddr = Range("B66") Comment1 = Range("H63").Value Comment2 = Range("H65").Value Comment3 = この辺りがわかりません Comment4 =Range("H67").Value 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" 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 End Sub どなたかご存知ではないでしょうか? 毎回で申し訳ございませんが、どうぞ宜しくお願い致します。

  • エクセルvba

    エクセルvbaなのですが Sub test() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) 'コード・・・ Set xlApp = Nothing Set xlBook = Nothing End Sub これだと Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) の部分で、エラーになります。 実行時エラー1004です。 自身ファイルをオブジェクトに格納して操作したいのですがどうすればいいでしょうか?

  • エクセルVBAでOutlookメールの書式を変える

    エクセル2010です。 下記のようなコードでOutlookメールを作成したとき、たとえば  "ABC株式会社" だけを赤字で太文字にするにはどう書けばよいのでしょうか? Sub TEST001()   Dim oApp As Object   Dim objMAIL As Object   Dim strMOJI(1) As String   On Error Resume Next   Set oApp = GetObject(, "Outlook.Application")   On Error GoTo 0   If oApp Is Nothing Then     Set oApp = CreateObject("Outlook.Application")   End If   Set objMAIL = oApp.CreateItem(0)   strMOJI(0) = "こんにちは!" & vbCrLf & _   "色付けテストです。" & vbCrLf & _   "よろしくおねがいします。" & vbCrLf   strMOJI(1) = vbCrLf & _   "以上です。" & vbCrLf & _   "ABC株式会社" & vbCrLf & _   "emaxemax"   objMAIL.To = "xxxx@xxx.co.jp"   objMAIL.CC = "yyyy@xxx.co.jp"   objMAIL.Subject = "テスト"   objMAIL.Body = strMOJI(0) & strMOJI(1)   objMAIL.Display End Sub

  • メールにファイルを添付する or メールに表を貼り付ける マクロ

    こんにちは。 同じ質問を一週間ほど前にしたのですが、その後もわかっていなくて、どなたかご存知の方がいらっしゃればご教示いただけないでしょうか? 宜しくお願い致します。 送りたいメールの形は 数行の文章のあとに、表を貼り付け、また数行の文章という形式です。 Outlookメールでメールを立ち上げて Comment1と2は文章ですのでエクセルのコラムを引っ張ってくるようにしているのですが、 Comment3部分に別のエクセルにある表をメタ貼りし、Comment4でまた文書を引っ張ってくるとさせたいのですが Comment3部分の動きが出来ません。 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 ’日付の設定 DMY = Range("b_date") DM = Format(Range("b_date").Value, "mmdd") Worksheets("mail").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("B69") & "_" & DM EmailAddr = Range("B63") CCAddr = Range("B66") Comment1 = Range("H63").Value Comment2 = Range("H65").Value Comment3 = この辺りがわかりません Comment4 =Range("H67").Value 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" 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 End Sub もしくは、貼り付けるのではなく、Rドライブに保存したファイル(表が記載してあるもの)を添付するという形式でも構いません。 宜しくお願い致します。

専門家に質問してみよう