
いつもお世話になっています。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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでセル内改行の1行目...
-
結合されたセルの一部を変更す...
-
エクセルの結合セル内に文章を...
-
EXCELの質問2件です。
-
エクセルの背景色は何色?
-
エクセルのセル内で改行コピー...
-
エクセルVBA ブックのクロ...
-
エクセルでハイパーリンクのコピー
-
Wordの置換機能で「改行」をな...
-
アクティブセルとそのセルに隣...
-
セルの左上に出る三角マークは...
-
Excel vba 毎月の第○ △曜日を求...
-
小数点以下を切り捨てる関数
-
エクセルからコピーして、写真...
-
PowerPointの表内のカンマ
-
エクセル 数式の無効化
-
エクセルで休日の「休」という...
-
Excelにて隠された行の再表示
-
【VBA】PDF出力に任意のファイ...
-
EXCELでタイトル行と一番下の行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでハイパーリンクのコピー
-
エクセルでセル内改行の1行目...
-
結合されたセルの一部を変更す...
-
エクセルの結合セル内に文章を...
-
アクティブセルとそのセルに隣...
-
エクセル 0:00 の時間をカウン...
-
エクセルのセル内で改行コピー...
-
VBA セル内で改行またはカンマ...
-
エクセルで 来年の曜日の自動設定
-
VBAからのHYPERLINK関数のアド...
-
エクセル 行も列もバラバラの入...
-
Excel vba 毎月の第○ △曜日を求...
-
【Excel】 色の一致するセル数...
-
VBA ダブルクリックでセルの真...
-
エクセルのセルの右下の角の十...
-
行ごとの最大値に色付けし、列...
-
Excel VBAで可視セルをコピーし...
-
Word文書にパスワードをマクロ...
-
至急excelに関して質問です。 ...
-
Excel セル貼り付けができません
おすすめ情報