No.1ベストアンサー
- 回答日時:
こんにちは
少しめんどくさい処理が必要かと思います
先ず、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にしました
条件分岐はデバッグ不足なのでどうかな?
No.2
- 回答日時:
こんにちは
何度も似た様な質問をなさっているようですが・・
HYPERLINK関数で設定されているリンクは、あくまでも関数として認識されているので、いわゆる「セルのリンク設定」としては扱われていません。
ですので、そのまま直接実行するには「セルをクリック」するしかないと思われます。
どうせVBAで行うのなら、
1)ダミーセルに「同様の内容をリンク設定」して、
HYPERLINK.FOLLOWで実行する
2)OUTLOOK等を直接制御して、メールを作成する
などが考えられます。
3)どうしてもセルをクリックしたければ、以下でも可能でしょう
https://thom.hateblo.jp/entry/2015/11/21/002304
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【 Excel】シートの見出しに自...
-
VBAで条件によってシート見出し...
-
マクロを複数シートに実行する...
-
Excelで,特定のシートを開いた...
-
複数シートの保護・解除
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
マクロでのシートコピー数制限?
-
EXCELでワークシートを開いたら...
-
メッセージボックスでシート名...
-
VBAで作るexcel検索窓
-
エクセルでシートの並び替えで...
-
VBA シート名を先月の名前に...
-
Excelのマクロの呼び出し元を知...
-
エクセルを閉じる際に自動保存...
-
エクセル シート保護をかける...
-
Excelでたくさんのシートで設定...
-
エクセル2000VBA コマンドボタ...
-
Excel:複数シートから条件に合...
-
マクロで複数シートに条件付き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
EXCELでワークシートを開いたら...
-
エクセルを開いたとき常に同じ...
-
VBAで条件によってシート見出し...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセルでシートの並び替えで...
-
エクセルの複数のワークシート...
-
複数シートの保護・解除
-
エクセルで複数のSheetを一括フ...
-
エクセルで回数をカウントする...
-
EXCELのエラー
-
Excel:複数シートから条件に合...
-
VBA シート名を先月の名前に...
-
EXCELの起動時に常に同じ...
-
Excelで,特定のシートを開いた...
-
Excelのマクロの呼び出し元を知...
-
メッセージボックスでシート名...
おすすめ情報