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

やっかいな質問で申し訳ないのですが、ハイパーリンク関数 =HYPERLINK(リンク先,表示名)
をコピーして、普通リンクにさせることは、不可能なのでしょうか?

具体的には、A1に、"OK"があり、B1に、"YAHOO"があります。
C1には、以下のハイパーリンク関数が、数式バーにあります。
=IFERROR(HYPERLINK("http://g****",A1),HYPERLINK("http://y****",B1))
C1は、エラーのため、リンクは、"http://y****"で、YAHOO"を表示しています。

C1をコピーして、D1に貼り付けするのですが、形式を選択貼り付けでも、文字コピーか、ハイパーリンク関数がコピーされるだけです。
やりたいことは、普通リンクのように、"YAHOO"表示で、数式バーにも、"YAHOO"表示だけで、リンクは、"http://y****"としたいのです。

自分の、浅い知識でいろいろやって1ヶ月たちましたが、うまくいきませんでした。
この難問に挑戦して、さらに教えていただける方があれば、どうかよろしくお願いいたします。

A 回答 (4件)

すいません。

少し考慮が足りませんでした。対象のセルをコピーした後、マクロの起動操作を行うとコピー状態が解除されてしまうようです。
そこで、マクロの実行を右クリックメニューに組み込んでみました。下記のマクロを該当シートのSheetモジュールに張り付けて下さい(前回のマクロはそのままで)。
その上で、次のように操作します。
なお、今回のコードは最適なものとは言えません。本来であればメニュー設定は最初に1回実行すれば良いのですが、説明が面倒だったので、こんな実装になっています。

【操作方法】
①HYPERLINK関数が設定されているセルをコピーする。
②ペースト先のセルを右クリックして、「ハイパーリンク貼り付け」を選択する。

【VBA】
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Application.CommandBars("Cell").Reset
With Application.CommandBars("Cell").Controls.Add(Before:=1, Temporary:=True)
.Caption = "ハイパーリンク貼り付け"
.OnAction = "PasteHypLnk"
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます、結果ですが、残念な事に、貼り付けできたものは、形式を選択して、数式を貼り付けたものと同じ結果になりました。
でも、なんか、選択Caption増やせるとか、すごいです、やっぱり、とんでもなくできる人が世の中にいるのを改めて感じます。
お休みにもかかわらず、このような面倒な質問にお付き合いいただき、感謝いたします。
VBAは、たぶんこちらで頑張って修正できそうな気がします、あくまで気がするだけですが。(笑い)

お礼日時:2017/05/07 16:53

こんなのはどうでしょうか。

下記のマクロを標準モジュールに張り付けて下さい。
その上で、次のように操作します。
ちなみに、エラー処理は組み込んでいないので、正しく使わないとエラーになります。

【操作方法】
①HYPERLINK関数が設定されているセルを「Ctrl+c」でコピーする。
②ペースト先のセルを選択する。
③下記マクロのPasteHypLnkを実行する。
※マクロを右クリックメニューに登録するともっと便利ですですが、ここでは省略します。

【VBA】
Sub PasteHypLnk()
Dim a As Variant
ActiveSheet.Paste
Selection.Formula = Replace(Selection.Formula, "HYPERLINK", "GetHypLnk")
a = Split(Selection.Value, ",")
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=a(0)
If a(1) <> "" Then
Selection.Value = a(1)
Else
Selection.Value = a(0)
End If
End Sub

Function GetHypLnk(L As Variant, E As Variant) As Variant
GetHypLnk = L & "," & E
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
実効した結果、ワークシートのペーストメソッドが、失敗しましたとでます。デバックによると、ActiveSheet.Paste辺りを変えるとよいのでしょうか?できれば、引き続き、よろしくご指導いただきたいです。

お礼日時:2017/05/06 22:48

希望している方法ではないかもしれませんが。



Excelのセルから貼り付けするときの形式に希望の形式がないのなら、
Wordを経由して貼り付けをしてみてはいかが。

ExcelシートのC列をコピー。
Wordに貼り付け(普通の貼り付け形式でOK)。
Wordに貼り付けた範囲をコピー。
Excelに普通の形式で貼り付け。

これで、数式バーには表示文字列だけになり、ハイパーリンクの形式は
維持されています。
1ヶ月も悩むくらいなら、Word経由の方法を試したほうがずっと楽。
    • good
    • 1
この回答へのお礼

回答、ありがとうございます、まさに、悩んでいることは、それですし、楽であるのもご教授通りだと思います。
私は、ご指摘のWord経由、html経由でも、貼り付けた範囲をコピー、貼り付けを2、3度試みてみました。
いずれにしても、経由のわずらわしさと時間があり、受け渡しを他の自動化マクロで試みたところ、
変換関数が多いのと、行数が多いのか、エクセル⇔ワードにしても、エクセル⇔htmlにしても変換時間が、思った以上にかかってしまいました。
試したのは、URLを取り出して、それをハイパーリンクダイアログに貼り付けていくマクロですが、私の力では、できないのです。
エクセルマクロや関数等、エクセル内のみで解決できる手段があればいいのですが、どこかにできるひとがおられるのではないかと。
ベストアンサーにしたいところですが、他の方法も含め、もう少し待ってみます。

お礼日時:2017/05/06 15:37

> やりたいことは、普通リンクのように、"YAHOO"表示で、数式バーにも、"YAHOO"表示だけで、リンクは、"http://y****"としたいのです。


最終的にこれだけであれば(ハイパーリンクのコピー云々は、なし)関数など使わず当該セルを右クリック→ハイパーリンク
ハイパーリンクダイアログが表示→表示文字列に「yahoo」、一番下のアドレスのYahooのアドレス(https://www.yahoo.co.jp/
但しアドレスに入力した時点で、表示文字列がアドレスに変わりますからここで編集。あるいは先にアドレスを入力後、表示文字列を編集した方が適切かも。
    • good
    • 0
この回答へのお礼

さっそくの回答、ありがとうございます。
質問の仕方が、足らなかったみたいですみません、コピーしたい関数は、かなりのめんどくさい関数になっており、ハイパーリンク関数
をコピーして、普通リンクにさせることによってしか、解決の糸口がつかめない状況なのです。

お礼日時:2017/05/06 15:09

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

このQ&Aを見た人はこんなQ&Aも見ています