[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『EXCEL VBA OUTLOOKメール ハイパーリンク設定』(k)
当方初心者につきお手柔らかにお願いします。
セルB14にCフォルダのハイパーリンクを入力しておりますが、メール作成の際にうまくセットされずリンク表示となりません。
対応をご教示いただけますでしょうか。
'outlookを起動する
Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, Display, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.MailItem 'Outlookで使用するオブジェクト生成
'差出人、本文、署名を取得する--- toaddress = Range("B10").Value 'To宛先 ccaddress = Range("B11").Value 'Cc宛先 subject = Format(Date, "yyyy/m/d") '件名 mailBody = Range("B13").Value '本文 Display = Range("B14").Value '本文 credit = Range("B15").Value 'クレジット
'メールを作成して、差出人、本文、署名を入れ込む---
Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) '添付ファイル
mailItemObj.BodyFormat = 2 'htmlテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.CC = ccaddress 'ccをセット mailItemObj.subject = subject '件名をセット mailItemObj.Body = mailBody & vbCrLf & Display & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット
< 使用 Excel:Excel2021、使用 OS:Windows11 >
状況が不明なので確認です。 > セルB14にCフォルダのハイパーリンクを入力しておりますが そのリンク先はCフォルダのファイルなんですか? そのメールを受け取った側が、メール発信者のCフォルダにアクセスでもできるんですか? リンクじゃなく、素直にファイルを添付したらまずいんですか? (xyz) 2023/09/20(水) 20:08:29
ああ、そうですか了解。 それならanchorタグ、つまり<a> ですね。これを使ったHTMLにしたらいかがですか? (xyz) 2023/09/20(水) 20:52:41
<a href="file://c:/folderpath/filename">ここをクリック</a> というタグにして試して下さい。 私はここまでです。 (xyz) 2023/09/20(水) 22:08:51
■1
既に回答がありますが、HTMLタグで修飾するだけでいいのではないでしょうか?
■2
困りはしないでしょうが「subject」や「Display」は紛らわしいので変数名に使うのは避けたほうがいいような気がします。(好みの問題かもですが)
また、全体が提示されていないので、提示された部分だけ見ると一旦変数に受ける必要性は薄い気がします。
■3
提示されたものは、アーリーバインディングとレイトバインディングがまぜこぜになっているように思います。(細かい話ですがちょっとだけ気になりました。)
■4
ということを踏まえて↓のようにしてみてはどうでしょうか?
Sub 名もなきマクロ() Dim mailItemObj As Object Set mailItemObj = CreateObject("Outlook.Application").CreateItem(0)
With ActiveSheet mailItemObj.BodyFormat = 2 'html形式に変更 mailItemObj.To = .Range("B10").Value 'To宛先 mailItemObj.CC = .Range("B11").Value 'Cc宛先 mailItemObj.Subject = Format(Date, "yyyy/m/d") '件名
mailItemObj.HTMLBody = _ "<p>" & .Range("B13").Value & "<br>" & _ "<a href=""" & .Range("B14").Value & """>" & .Range("B14").Value & "</a>" & "<br><br>" & _ .Range("B15").Value & "</p>" End With
mailItemObj.Display End Sub
(もこな2) 2023/09/21(木) 00:15:53
※トピ主が【Cフォルダ】と表現されているものの正体が こちらにはわかりませんので、その辺は自己解決するしかないとおもいます。
(もこな2 ) 2023/09/21(木) 19:00:21
例えば、↓のような【フォルダ(及びファイル)】へのアクセス権を全員がもっているとしても、別の端末から"C:\hoge\〜"でアクセスできないのはわかりますよね?
C:\hoge\Cフォルダ\共有.xlsx
【xlsm形式のthisworkbook】とのことですが、ネットワーク越しにアクセスできるかは関係ありません。
もっと言うと"thisworkbook"といわれても意味が分かりません。(おそらくワークブックの書き間違いでしょうが)
重要なのは、【Cフォルダ】と表現されているものへ、【あなた(が使っている端末以外)】から【送ったリンク】でアクセスできるかどうかです。ですから"自端末"でいくらテストしてもあまり意味がないです。
※【\\123.456.789\Cフォルダ\共有.xlsm】というリンクを送っているなら、まだわかりますが・・・・
したがって、まずは【手作業】で【メールを作成してから送信し】相手の方に【Cフォルダのファイルが】開けるかどうか試してもらってはいかがでしょうか?
(もこな2 ) 2023/09/21(木) 20:08:35
誤 重要なのは〜【あなた(が使っている端末以外)】から【送ったリンク】でアクセスできるかどうかです。 正 重要なのは〜【あなた(が使っている端末)以外】からアクセスしようとしたときに【送ったリンク】で到達できるかどうかです。
要は、【Cフォルダ】の実体が共有フォルダでもファイルサーバー上のフォルダでも、はたまたクラウド上のものでも構いませんが、そのリンク(パス)で他の端末からアクセスできるのかどうか確認したほうがよいとおもいます。
(もこな2 ) 2023/09/21(木) 20:32:52
>thisworkbook(本マクロを保存しているワークブックという意味で使用してます)
既にコメントしたとおりです。
>おそらく読み取り専用がうまく機能せず開く状態にならないのがポイントかと思います
こちらもコメント済みですが、こちらで再現できませんから、ご自身でトライ&エラーして検証頂くしかないでしょう。
最後まで、【Cフォルダ】の実体が明かされることはなかったですが、共有フォルダ、ファイルサーバー上のフォルダに格納しているのであれば、使用中かどうか判定できるでしょうから、目的のブックを開くためだけのマクロブックを作成し、そちらを共有されてはどうでしょうか?(スクリプトでもたぶんok)
(もこな2 ) 2023/09/21(木) 22:13:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.