| 例えばAccessからExcelにデータをコピーしてきて、データに番号があり、その番号にフォルダがあるとする。 そこにハイパーリンクを貼る事を考える。 list.xls参照 膨大なデータを手入力でハイパーリンクを貼っていくとそれだけで時間が過ぎてしまう。 そこで、Excel VBAで自動でハイパーリンクを挿入することを考える。 何万項目でも10秒でハイパーリンクが貼れる優れもの。 詳細はlist.xls(hyper.zip)のVBEで見てください。 Sub ハイパーリンク() Dim pas As String Dim shit As String Dim shit1 As String Dim Linex As Integer Dim Liney As Integer shit1 = "VBA動作ボタン" pas = Sheets(shit1).Cells(5, 2).Value shit = Sheets(shit1).Cells(2, 2).Value Liney = Sheets(shit1).Cells(3, 2).Value Linex = Sheets(shit1).Cells(4, 2).Value Do Until Sheets(shit).Cells(Liney, Linex).Value = "" Sheets(shit).Hyperlinks.Add Sheets(shit).Cells(Liney, Linex) _ , pas & "\" & Sheets(shit).Cells(Liney, Linex).Value Liney = Liney + 1 Loop End Sub ここでは、「改訂連絡書集」のB2列からしたの番号について、番号のフォルダがあり、番号のフォルダにハイパーリンクを貼るようにしている。 VBA動作ボタンシートで、ハイパーリンクを貼るシート名、始まりの行、列、ハイパーリンクを貼るフォルダを書き込んでボタンを押すと、設定したフォルダにハイパーリンクが貼れる。 中核は赤字の太字の部分である。 LineyとLinex(2行、2列)から下方向に値を見て行き、値がなくなるまで行う。 Sheets(shit).Hyperlinks.Add Sheets(shit).Cells(Liney, Linex), pas & "\" & Sheets(shit).Cells(Liney, Linex).Valueで、ハイパーリンクを貼る。 ここではshit="改訂連絡書集"となっている。 Sheets(shit).Hyperlinks.Addで改訂連絡書集のハイパーリンクをはる。 その後の値Sheets(shit).Cells(Liney, Linex)でハイパーリンクをはるセルを設定。 次の値pas & "\" & Sheets(shit).Cells(Liney, Linex).Valueで、ハイパーリンクのとび先を指定。 第3引数も指定でき、飛び先で***.xlsを指定した場合、シート名も指定可能。 第4,5引数も指定でき、ハイパーリンクを貼るセル名およびカーソルを合わせた時のセル名を指定できる。 Excel VBAを実行するだけで、ホームページやフォルダを開いたり、ハイパーリンクを解除できる。 Sheets(shit).Hyperlinks.Add Sheets(shit).Cells(Liney, Linex) _ , pas & "\" & Sheets(shit).Cells(Liney, Linex).Value ActiveSheet.Range("A1").Hyperlinks(1).Follow ←ハイパーリンクのとび先をVBAで表示 ActiveSheet.Range("A1").Hyperlinks(1).Delete ←ハイパーリンクを解除 さらに、ハイパーリンクを設定しなくても自動でハイパーリンクのとび先をVBAで表示可能。 Sheets(shit).Hyperlinks.Add Sheets(shit).Cells(Liney, Linex) _ , pas & "\" & Sheets(shit).Cells(Liney, Linex).Value.Follow ハイパーリンクをたくさんつけなければならない時はVBAで自動可させてみよう。 |