ジョージはワークシートにハイパーリンクを挿入することがよくあります。これらのハイパーリンクは、彼のコンピューターシステムに存在するさまざまなタイプのファイルへのリンクです。彼がハイパーリンクを挿入するとき、Excelが挿入するデフォルトのハイパーリンクテキストは、ファイルのフルパスとファイル名です。 Georgeは、デフォルトで、このハイパーリンクテキストがフルパスなしでファイル名のみで構成されることを望んでいます。

目的の結果を達成するための非常に簡単な方法が1つあります。ハイパーリンクが必要なファイルと同じフォルダーにブックを移動するだけです。 [ハイパーリンクの挿入]ダイアログボックスを使用すると、パスを含まないファイル名がリンクに使用されます。

それが不可能な場合は、[ハイパーリンクの挿入]ダイアログボックスを使用すると、[ハイパーリンクの挿入]ダイアログボックスの[アドレス]フィールドと[表示するテキスト]フィールドの両方にフルパスが表示されます。このデフォルトの動作を変更する方法はありません。 Excelによって提案されたデフォルトのみを編集できます。つまり、個々のハイパーリンクごとに、[ハイパーリンクの挿入]ダイアログボックスの[表示するテキスト]フィールドを編集して、必要に応じてファイル名だけが表示されるようにすることができます。

もちろん、これには多くの編集が含まれます。したがって、Georgeのクエリの推進力になります。これを回避する方法はいくつかあります。 1つは、[ハイパーリンクの挿入]ダイアログボックスに依存しないことです。代わりに、HYPERLINK関数を使用してハイパーリンクを挿入する式を作成してください。たとえば、セルC2に、ファイルを含むフォルダーへのパス名があるとします。

C:\Users\allen\Desktop\

さらに、次のように、D2:D75の範囲のファイル名のリストを作成できます。

MyWorkbook.xlsx MyDocument.docx MyPDF.pdf

このような式をセルE2に配置できます:

=HYPERLINK($C$2 & D2,D2)

数式をE3:E75の範囲にコピーすると、必要に応じてハイパーリンクが作成されます。

スプレッドシートにすでに多数のリンクが挿入されている場合(たとえば、列A)、少し大きい数式を使用して、ファイル名だけを抽出して表示できます。

=HYPERLINK(A1,SUBSTITUTE(A1,LEFT(A1,FIND(CHAR(1),SUBSTITUTE(A1, "\",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))),""))

次に、フルパスハイパーリンクを含む列を非表示にして、必要な短縮バージョンのみを表示することができます。

影響を与えるハイパーリンクが多数ある場合は、マクロを使用して、既存のすべてのハイパーリンクからパスを削除できます。

Sub FixHyperlinkDesc()

Dim h As Hyperlink     Dim sRaw As String     Dim iPos As Integer

For Each h In ActiveSheet.Hyperlinks         sRaw = h.TextToDisplay         iPos = Instr(1, sRaw, "\")

While (iPos > 0)

sRaw = Mid(sRaw, iPos + 1, Len(sRaw))

iPos  = Instr(1, sRaw, "\")

Wend         If sRaw <> h.TextToDisplay Then             h.TextToDisplay = sRaw         End If     Next h End Sub

マクロが触れるのは各ハイパーリンクの表示テキストだけであり、最後の円記号の前にすべてを削除します。マクロは、HYPERLINK関数の結果として表示される可能性のあるものには影響しません。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13279)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。