
いつもお世話になっています。Excel 2003のVBAについてご質問させてください。
あるセル上に、下記のように別名が指定されたHYPERLINK関数があります。
=HYPERLINK(配置先, ファイル名)
現在、VBAよりHYPERLINK関数が指し示す配置先(アドレス)を取得しようと思っています。
これを取得するにはどうすれば良いでしょうか?
なお、以下のような付加条件があります。かなりワガママだとは自覚していますが、
なにとぞお知恵をお貸しください。
(1)「配置先」には、実際には複雑な分岐等があり、これを生成するロジックのVBA化は困難
(2)「配置先」だけ別セルに書き出すことは出来なくはないが、今回は避けたい
(3)Excel 2010でも動作する必要がある。
(3)についてはこちらで動作確認致しますので、Excel 2003での情報をお願いします。
No.2ベストアンサー
- 回答日時:
かなり強引だけどこんなのを作ってみました。
・セルA999をWORK用に使っています。
・対象となるセル式中に「HYPERLINK(」が一回しか出て来ない事が条件です。
Function GetURL(rTarget As Range) As String
Dim sStr1, sStr2, i
Dim sStr3 As String
If rTarget = "" Then Exit Function
sStr1 = Split(Range("A2").Formula, "HYPERLINK(")
sStr2 = Split(sStr1(1), ",")
For i = 0 To (UBound(sStr2) - 1)
sStr3 = sStr3 & sStr2(i) & ","
Next i
sStr3 = Mid(sStr3, 1, Len(sStr3) - 1)
Range("A999").Formula = "=" & sStr3
GetURL = Range("A999").Value
Range("A999").Clear
End Function
度々のご回答ありがとうございます。
そのままでは動かなかったので、下記の通り改造すると期待通りの動作をしました。
Function GetURL(rTarget As Range) As String
Dim sStr1, sStr2, i
Dim sStr3 As String
If rTarget = "" Then Exit Function
sStr1 = Split(rTarget.Formula, "HYPERLINK(") '←A2をrTargetに変更
sStr2 = Split(sStr1(1), ",")
For i = 0 To (UBound(sStr2) - 1)
sStr3 = sStr3 & sStr2(i) & ","
Next i
sStr3 = Mid(sStr3, 1, Len(sStr3) - 1)
Sheet1.Range("A999").Formula = "=" & sStr3 '←念のためシートの明確化
GetURL = Sheet1.Range("A999").Value '←念のためシートの明確化
Sheet1.Range("A999").Clear '←念のためシートの明確化
End Function
Excel 2010では動作未確認ですが、おそらく期待通りの動作をするだろうと思います。
こちらの結果は補足にてご報告させて頂きます。
アルゴリズムまで考えて頂き、本当にありがとうございました。
個人的にはもっとお手軽な方法があれば良いなと思っていたのですが、
やはり力技で行くしかないんですね(--;
No.3
- 回答日時:
例えば
=IF(G14<>"",HYPERLINK(A1&IF(TEXT(TODAY(),"YY")=(MID(G14,3,2)),"~))","20"&(MID(G14,3,2))&"\")&G14&"Sample.xls", G14&"Sample.xls"),"")
こんな数式のような意地悪な事はないと思いますが :)
Sub test()
Dim flg As Boolean
Dim f As String
Dim s As String
Dim c As Long
Dim i As Long
f = Selection.Formula
c = InStr(f, "HYPERLINK(")
If c > 0 Then
f = Mid(f, c + 10)
c = 0
For i = 1 To Len(f)
s = Mid(f, i, 1)
If s = """" Then flg = Not flg
If Not flg Then
Select Case s
Case "("
c = c + 1
Case ")"
c = c - 1
Case ","
If c = 0 Then Exit For
End Select
End If
Next
f = Left(f, i - 1)
Debug.Print f, Evaluate(f)
End If
End Sub
ご回答ありがとうございます。
Excel 2003にて、少し改造して動作確認したところ、こちらの内容でも動作することを確認しました。
Evaluate関数で計算式の実行結果が見られるのですね。
こちらもExcel 2010での動作確認結果を補足にて報告させていただきます。
No.1
- 回答日時:
こういう事?
何か私が勘違いしている気がしますが……。
sStr = Split(Range("A1").Formula, ",")
MsgBox Right(sStr(0), Len(sStr(0)) - Len("=HYPERLINK("))
ご回答ありがとうございます。
ですが、ご回答いただいた内容では実現できませんでした。
付加条件(1)にある通り、「配置先」には複雑な分岐等があります。
これを詳しく書くと、以下の内容です。
=IF(G14="","",HYPERLINK(A1&IF(TEXT(TODAY(),"YY")=(MID(G14,3,2)),"~","20"&(MID(G14,3,2))&"\")&G14&"Sample.xls", G14&"Sample.xls"))
そのため、ご回答頂いたsStrの中身は以下のようになってしまいます。
=IF(G14=""
※正しくは上記のような内容ではありませんが、業務にかかわるので開示はご容赦ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】hyperlink関数を解除してもハイパーリンクが活きるようにできますか? 3 2023/05/22 11:22
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) 複数指定セルの可視セルのみを別シートに転記するVBAについて 2 2022/05/27 21:19
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
Hyperlink関数をクリックしてくれるマクロ
Excel(エクセル)
-
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
-
4
括弧があるとHYPERLINKで飛べない?
Excel(エクセル)
-
5
エクセル;相対パスを絶対パスへ変換
Excel(エクセル)
-
6
Excel VBA ユーザーフォーム 複数のユーザーフォームの閉じ方。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでセル内改行の1行目...
-
エクセルでハイパーリンクのコピー
-
結合されたセルの一部を変更す...
-
Excel vba 毎月の第○ △曜日を求...
-
【Excel】 色の一致するセル数...
-
エクセルで 来年の曜日の自動設定
-
エクセル 0:00 の時間をカウン...
-
アクティブセルとそのセルに隣...
-
エクセルの結合セル内に文章を...
-
エクセルのセルの右下の角の十...
-
Word文書にパスワードをマクロ...
-
PowerPointの表内のカンマ
-
【VBA】PDF出力に任意のファイ...
-
名簿の漢字名を関数で半角カナ...
-
EXCEL 連動したドロップダウン...
-
EXCELでタイトル行と一番下の行...
-
エクセルの計算式でコンマを付...
-
LINEのこの空白ってどんな意味...
-
エクセルの計算結果に+(プラス...
-
エクセルでエンターを押すと隣...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでハイパーリンクのコピー
-
エクセルでセル内改行の1行目...
-
結合されたセルの一部を変更す...
-
エクセルの結合セル内に文章を...
-
エクセル 0:00 の時間をカウン...
-
エクセルで 来年の曜日の自動設定
-
Excel vba 毎月の第○ △曜日を求...
-
エクセルのセル内で改行コピー...
-
アクティブセルとそのセルに隣...
-
VBAからのHYPERLINK関数のアド...
-
VBA セル内で改行またはカンマ...
-
【Excel】 色の一致するセル数...
-
VBA ダブルクリックでセルの真...
-
【マクロ】アクティブセルの、...
-
エクセルのセルの右下の角の十...
-
エクセルのVBAで特定のセルの文...
-
Excel セル貼り付けができません
-
エクセル 行も列もバラバラの入...
-
Word文書にパスワードをマクロ...
-
MSNメッセンジャーにエクセルか...
おすすめ情報