アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の数式をマクロ実行で実行できる方法があれば教えてください。
=HYPERLINK("mailto:"&L33&"?cc="&L34&"&subject="&L35&"&body="&L36&"","メールを作成する")
尚、シート名「提出シート」セル値「B1」に数式を設定しております。
よろしくお願いいたします。

A 回答 (2件)

こんにちは


少しめんどくさい処理が必要かと思います
先ず、HYPERLINK関数を入力したセルをクリックするとメールが作成される事が前提となります
VBAで呼び出す場合、関数に書かれているセルの値を代入して呼び出す必要があります
それをActiveWorkbook.FollowHyperlink Address:=値(文字列) で実行します
例えば、ActiveWorkbook.FollowHyperlink Address:=Range("B1").Formula
と書くと=HYPERLINK("mailto:"&L33&"?cc="&L34&"&subject="&L35&"&body="&L36&"","メールを作成する")となってしまい
各セルの値を取得できませんね
VBA内のコードで
"mailto:" & Range("L33") &・・と書くと汎用性に欠けます
いずれにしても .Formula 数式を取得して文字列操作する必要があります

関数の数式を取得して 文字列操作 セルアドレスの値を取得して
必要な文字列を作りFollowHyperlink Address:=に与える・・
この様な処理手順が必要だと思います。。 下記は例です
セルアドレスの値はExcel(空きセルで)任せ

Sub HyperLink_Exec()
With Range("B1")
If .Hyperlinks.Count > 0 Then
.Hyperlinks.Item(1).Follow
ElseIf .HasFormula And InStr(.Formula, "HYPERLINK") > 0 Then
ActiveWorkbook.FollowHyperlink Address:=GetLinkURL(.Item(1))
Else
MsgBox "ハイパーリンクは設定されていません"
End If
End With
End Sub

Function GetLinkURL(rTarget As Range) As String
Dim v1 As Variant, v2 As Variant, str3 As String
Dim i As Long
If rTarget = "" Then Exit Function
v1 = Split(rTarget.Formula, "HYPERLINK(")
v2 = Split(v1(1), ",")
For i = 0 To (UBound(v2) - 1)
str3 = str3 & v2(i) & ","
Next i
str3 = Mid(str3, 1, Len(str3) - 1)
With Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Formula = "=" & str3 '値取得はExcelにお任せ
GetLinkURL = .Text
.Clear
End With
End Function

文字列操作はFunctionにしました
条件分岐はデバッグ不足なのでどうかな?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
やはりかなり難しいのですね。
頑張って挑戦してみます。

お礼日時:2022/10/12 14:13

こんにちは



何度も似た様な質問をなさっているようですが・・

HYPERLINK関数で設定されているリンクは、あくまでも関数として認識されているので、いわゆる「セルのリンク設定」としては扱われていません。
ですので、そのまま直接実行するには「セルをクリック」するしかないと思われます。

どうせVBAで行うのなら、
1)ダミーセルに「同様の内容をリンク設定」して、
 HYPERLINK.FOLLOWで実行する
2)OUTLOOK等を直接制御して、メールを作成する
などが考えられます。

3)どうしてもセルをクリックしたければ、以下でも可能でしょう
https://thom.hateblo.jp/entry/2015/11/21/002304
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考にさせて頂きます。

お礼日時:2022/10/12 14:12

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