考える力を君に! | 考える力をつける塾-凜明館

Excelのハイパーリンクで警告を出さない方法

Excelのお節介機能で厄介なのが、ハイパーリンクで動画ファイルなどを開こうとすると
「ファイルには、ウイルスやコンピューターに問題を起こす可能性のあるものが含まれていることが有ります。
このファイルが信頼できる所からのものか確かめてください。
このファイルを開きますか?」
と聞かれます。
リンク3

これが実に邪魔くさい。
何度も繰り返して見る動画のリンクをクリックした場合には
「はいはい、さっきも言ったでしょ。
ウイルス付きのファイルじゃないので開きますよ!」
と言いたくなります。

これを解決する方法はいろいろあるようですが、どれもイマイチ。
レジストリーをいじる方法やある特殊のフォルダだけにしか使えないものなどさまざま。
いろいろ調べたらいい方法がありました。

VBA(マクロ)を使う方法なので、慣れない人にとってはちょっと大変かもしれませんが、便利な方法なので書いておきます。

使うのは「Hyperlink.add」と「FollowHyperlink」です。
動作を簡単に言うと
●「ハイパーリンク」のリンク先アドレスを「address」に書き込むするのではなく「ScreenTip」という、マウスオーバーした時に表示されるヒントに書き込みます。
●「FollowHyperlink」イベントで「ハイパーリンクがクリックされたことを検出したら、そのハイパーリンクの「ScreenTip」の値を調べる。
●その調べたファイルやプログラムを「Wscript.Shell」で走らせる。
と言う流れです。
「ScreenTip」は通常のハイパーリンクを設定する画面では設定できないので、VBA(マクロ)で書き込んであげる必要があります。

実際にやってみましょう。
下記の設定でやります。
動画を入れているフォルダー:C:¥動画フォルダ
リンクを貼るSheet:「動画」Sheet

(1)リンクの作成マクロ作成
●「動画」シートのリンクを貼りたいセルにタイトルなどを入力しておきます。
(例ではA1~A3セル)
●リンク先の動画ファイル名を入力します。
(例ではB1~B3セル)
リンク1

●Excelの「開発」タブをクリックし、「Visual Basic」をクリックする。
「挿入」「標準モジュール」をクリックし、作成された「module1」に下記のコマンドをコピペする。

Sub リンク作成()
Dim LNK As String
Dim i As Integer
For i = 1 To 3
LNK = “C:\動画フォルダ\” & Sheets(“動画”).Cells(i, 2) & “.mov” ‘①
Sheet1.Hyperlinks.Add _
Sheets(“動画”).Cells(i, 1), “”, , LNK, Sheets(“動画”).Cells(i, 1).Value ‘②
Next i
End Sub

解説
①リンク先のアドレスを発生させています。
上記のプログラムでは動画ファイルの拡張子は”mov”の場合です。
②ハイパーリンクを設定していますが、「address」は””にします。
つまりリンクを貼っていません。
その代わりに「ScreenTip」にリンク先アドレスを書き込んでいます。

(2)リンク起動マクロ作成
「動画リンク」シートに下記のプログラムをコピペします。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
With CreateObject(“Wscript.Shell”)
.Run Chr(34) & Target.ScreenTip & Chr(34), 4, False
End With
End Sub

これはおまじないと思ってそのまま貼り付けるだけでいいです。

(3)リンクの作成と起動
ここまでできたら
マクロの「リンク作成」を実行するだけです。
リンク2

これでリンクが作成されましたのでクリックすれば一発で動画が再生できます。
一度リンクが作成されたらリンク先データ(例ではB1~B3)は削除しても大丈夫です。

これでうまく動いたら、「名前を付けて保存」で「ファイルの種類」を
「Excel マクロ有効ブック」にして保存します。
うまくできましたでしょうか?

コメント

  • 教えていただきたいのですが、リンクの作成マクロのリンク先アドレス(LNK = “C:\動画フォルダ\” & Sheets(“動画”).Cells(i, 2) & “.mov” )を相対パスにしたいのですが可能ですか?よろしくお願いします。

    by Kouzou €2018年1月13日 9:52 AM

    • Kouzou様
      可能だと思います。
      リンクのアドレスを
      LNK = “C:\動画フォルダ\” & Sheets(“動画”).Cells(i, 2) & “.mov”
      から
      LNK = “..\hoge\動画フォルダ\” & Sheets(“動画”).Cells(i, 2) & “.mov”
      など、マクロ付きのExcelを置いたフォルダーの上の階層に一度上がってから相対パスにすればいいと思います。
      よろしくお願いします。

      by gosyo0 €2018年1月13日 6:30 PM

  • 全くの初心者です。

    module1 にコピペした後 と

    リンク起動マクロ作成

    のより具体的な方法をご教授いただけませんでしょうか。

    by Yagi €2019年10月7日 11:44 AM

  • 「module1 にコピペした後」の方はたぶんコピペしたテキストの一部が全角文字になってしまっている可能性があります。特にコメントとして書いてあった「’①」の「’」が勝手に全角になってしまっていることが多いようです。半角に直すとたぶん動くようになると思います。

    「リンク起動マクロ作成」の方は先ほどのものは「module1」にコピペしましたが、今度のものは「sheet1(動画)」に書き込む必要があります。

    by gosyo0 €2019年10月7日 7:44 PM

down

コメントする




このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください