ExcelでのHyperlinkの制限について

このQ&Aのポイント
  • Excel2010で、PCのHDに存在するファイルのリストを作成し、Hyperlinkを埋め込むことでファイルを見ることができますが、65531個までしかHyperlinkを埋め込むことができません。
  • 先頭の10個のHyperlinkを削除すると、65532番目の行から10個のHyperlinkを追加することが可能です。
  • Excelの制限により、65531個以上のHyperlinkを追加することはできませんが、可能であれば制限を解除または変更する方法を探しています。
回答を見る
  • ベストアンサー

ExcelでのHyperlink

PCのHDに存在するファイルのリストをExcel2010につくりました。 ファイル名に、Hyperlinkを埋め込んで、クリックすることで、当該ファイルを見ることができるようにしたのですが、何故か、65531個のファイルまでしか、HyperLinkを埋め込むことができません。 試しに、先頭の10個のHyperlinkを削除すると、65532番目の行から、10個のhyperlinkを埋め込むことは可能でした。 これは、Excelの制限なのかと思いますが、それならそれで、解除、或は、変更することができるのではないかと考えます。 サジェスチョンをお願い致します。 尚、VBAは、下記のようなものを使っています。 For i = 1 To RowEnd Hyperlinks.Add Anchor:=cells(i,1), Address:=Cells(i, 2).Value & "\" Cells(i, 1).Value, TextToDisplay:=Cells(i, 1).Value Next cells(i,1).value ----- file名 cells(i,2).value ----- path名

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

仕様ですので、それ以上のリンクは設定できません。 その代わり―― ハイパーリンクをあらかじめ設定しないで、シートモジュールに次のように記述されたらいかがでしょうか。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim FL As Variant If Target.Column <> 1 Or Target.Value = "" Then Exit Sub Hyperlinks.Add Anchor:=Target, Address:=Target.Offset(0, 1).Value _ & "\" & Target.Value, TextToDisplay:=Target.Value Hyperlinks(1).Follow DoEvents Target.Hyperlinks.Delete End Sub A列の空白でないセルが選択されたら、一時的にハイパーリンクを設定してジャンプし、直後にリンクを解除します。

atom_28
質問者

お礼

ありがとうございます。 セルをクリックすることで、HyperLinkを設定し、 そのファイルを開き、直後にHyperLinkを削除するというアイデア。 合理的です。感謝です。 尚、Excelの仕様、改めて、理解しました。 仕様は仕様と諦め、今回サジェスチョンしてくださったアイデアで、対応します。 ありがとうございました。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

出来ないならあんまり回答を重ねても意味ないんじゃないかとも思いますが >うまく動作しない 再掲: >A列にはファイル名を記入する >B列にはパスを「c:\test\」のように,最後の¥まで忘れず記入する A列に「ファイル名.拡張子」と正しいファイル名が記入できていない B列に「c:\test\」のように,最後の¥まで忘れず記入するとご説明した通りにデータを準備できていない など、データの準備が悪い状況が想定されます また、 再掲: >すべてのハイパーリンクを抹消し >シート名タブを右クリック,コードの表示を選び >現れたシートに下記をコピー貼り付ける と手順の説明の通りに行ってなくて、どこかわかりませんが勝手に違う事をしている状況が想定されます もう一度回答の通りによく読んで丁寧に行ってください。 あぁ、あとは他の回答で寄せられているマクロとバッティングしてるのかもしれませんね 過去のマクロは漏れなくしっかり全部消去して、まっさらの状態で行います。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

>cells(i,1).value ----- file名 >cells(i,2).value ----- path名 では,すべてのハイパーリンクを抹消し シート名タブを右クリック,コードの表示を選び 現れたシートに下記をコピー貼り付ける private sub Worksheet_BeforeDoubleClick(byval Target as excel.range, Cancel as boolean) if target.column > 1 then exit sub if target = "" then exit sub cancel = true activeworkbook.followhyperlink target.offset(0, 1) & target end sub A列にはファイル名を記入する B列にはパスを「c:\test\」のように,最後の¥まで忘れず記入する(忘れてるときはマクロで手当する) A列をWクリックする。

atom_28
質問者

補足

ありがとうございます。 followhyperlink、調べたのですが、いまいち、使い方がわかりません。 というのは、何故か、うまく動作しないのです。 Excel(2010)のヘルプは使えないし、少し困っています。 ご教示願えると、ありがたいです。

回答No.3

#2 misatoanna からの補足です。 リストのファイルがすべてExcelブックでしたら、「ハーパーリンクを一時的に作成し、のちに解除する」といった手順を踏まなくても、 シートモジュール(SelectionChange)に  Workbooks.Open Filename:=Cells(i, 2).Value & "\" & Cells(i, 1).Value と記述するだけでよいでしょう。

atom_28
質問者

お礼

ありがとうございます。 しかしながら、サーバーのファイルは、Excel以外のファイルも多数ありますので、 先にサジェスチョンしてくださった方法が、現実的かと思います。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

参考: http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010342495.aspx 資料にあるとおりシート当たりの制限となっているので、所定の数(65530)を超えそうならシートを改めてください。 シート2に移れば、また次の65530件ハイパーリンクを埋める事ができます。 >それならそれで、解除、或は、変更することができるのではないかと考えます。 はて? どうして仕様または制限を設定変更や解除できると思われたのかちょっと判りませんが、出来ないものはできませんよ。 まぁ将来的にエクセルのバージョンアップ等で、仕様に変更等があるかも?しれませんが。

atom_28
質問者

お礼

ありがとうございます。 今回の目標が、サーバーのファイルの整理ですので、膨大なファイルを並べ替え、 その上で、必要に応じてファイルを覗くことをしたいのです。 従って、シートを変えることでは、多分、目標は、達成できません。 Accessを使った方が、ベターなのかもしれません。 しかし、サジェスチョン、ありがとうございました。

関連するQ&A

  • ハイパーリンクの表示で質問の続きです。

    これで大丈夫かな? Sub test() Dim i As Long For i = 1 To Range("A65536").End(xlUp).Row Cells(i, 1).Hyperlinks(1).TextToDisplay = Cells(i, 1).Hyperlinks(1).Address Cells(i, 2).Value = Cells(i, 1).Hyperlinks(1).Address Next i End Sub ------------------- 有難うございました。完璧ですが、 ハイパーリンクのないセルのところでエラーになります。 ハイパーリンクのないセルは無視(エラーを無視)して次のセルの作業を指示したいのですが、・・・お願いします。 しばらくVBAを離れていまして思い出せません。すみません。

  • 【エクセル】VBAでハイパーリンクそうさ

    VBAでハイパーリンクのマクロを組んでいます。 A列にホームページ名が50行(シートによってまちまち)くらい並んでいて、 B列に、それに対応するURLが記入されています。B列は空白のところがちらほ らあります。 A列に、A列の表示(ホームぺジ名)のまま、B列のURLでハイパーリンクを張りたい です。リンクは貼れたんですが、ホームページ名がどうやれば表示できるかわかり ません。教えてくださいお願いします。 ダメダメですが、一応自分で書けたところまでを載せておきます。 Sub ハイパーリンク() Dim i As Integer Dim j As Integer j = 50 For i = 1 To j Sheets("Sheet1").Select Cells(i , 1).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _ Cells(i , 2), TextToDisplay:="" Next i End Sub としました。

  • Excelマクロ

    Excelマクロを使用して、ハイパーリンクのリンク先パスを変更しようとしております。 一旦、クライアントPCで変更しその後、ネットワークの別のPCでsaveし再度、起動させると相対パスに変更されてしまいます。 絶対パスで保持する方法はないでしょうか。 ご参考までに記述したマクロの一部です。 ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=パス & Cells(行, 2), TextToDisplay:=CStr(Cells(行, 2)) 何か良い方法があれば、ご教示をお願いします。

  • EXCEL VBA で実行時エラーが出ます。

    こんばんは。 エクセルのA列の1~40000行にhttp://www.google.co.jpへのリンクを設定する単純なコードですが、毎回65530行まで行くと「実行時エラー'1004'」が発生します。 (65530はInteger型の倍数に近いかと思いますが、どうなんでしょうか?) 環境はMacのブートキャンプでWindows10Home、Office365の最新版にアップデートしてあります。 よろしくお願いします。 Sub test() Dim i As Long For i = 1 To 80000 ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _ Address:="http://www.google.co.jp", _ TextToDisplay:="■" Next i MsgBox "完了" End Sub 通報する

  • V2005からハイパーリンク(excel2003)の設定

    現在VB2005からエクセルのハイパーリンクを設定しようとしているのですが、エラーが出て困っています。 処理は以下のとおりです。 xlSheet.Hyperlinks.add( _ Anchor:=xlSheet.Range("A1"), _ Address:="ttp://...", _ TextToDisplay:="test") エラー内容 パラメータが間違っています。 Anchorの設定が間違っているみたいなので、 いろいろ試してはいるのですが、よく分かりません。 ご教授お願いします。

  • Excel VBA ハイパーリンクの追加でエラー

    Excel VBAで下記のようなコードを書いて、ファイルに対するハイパーリンクを追加したいのですが、実行時にエラーとなってしまいます。 どんな原因が考えられるか教えていただけますでしょうか。 よろしくお願いいたします。 <実行環境> Excel 2003 <コード>  With ActiveSheet .Hyperlinks.Add Anchor:=.Cells(RowNum, 1), Address:=FilePath End With <エラー> 実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。 <補足> Excel2000の環境で実行すると正常に動作します。バージョンの違いで動作に差がでるのでしょうか? またRowNumとFilePathには有効な値が入っていることはステップ実行で確認しています。

  • エクセルVBAでDictionaryオブジェクトについて

    エクセル2000です。 教えてください。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_dictionary.html というサイトで  「myDic.Add Cells(i, 1).Value, Cells(i, 2).Value は   myDic(Cells(i, 1).Value) = Cells(i, 2).Value と書くこともできます。 」 という記述を見つけました。 試してみたところ Sub test01() Dim myDic As Object Dim myAr() Set myDic = CreateObject("Scripting.Dictionary") For i = 2 To 7 If Not myDic.exists(Cells(i, 1).Value) Then myDic.Add Cells(i, 1).Value, Cells(i, 2).Value End If Next i myAr() = myDic.Keys MsgBox Join(myAr()) End Sub Sub test02() Dim myDic As Object Dim myAr() Set myDic = CreateObject("Scripting.Dictionary") For i = 2 To 7 myDic(Cells(i, 1).Value) = Cells(i, 2).Value Next i myAr() = myDic.Keys MsgBox Join(myAr()) End Sub 上記2つのマクロは、Keyに関してはまったく同じ働きをするようです。 ところがItemに関しては、Keyが重複した場合、あとから出てきた方に上書きされるようです。 これはtest01では、Keyの重複を排除しているためItemは最初に出たものが残る、test02は重複の場合、無条件でKeyが上書きされ(ても値は変化しないけど)、したがってItemも上書きされるという理解でよろしいのでしょうか? ならば、Itemを気にしない場合、わざわざ If Not myDic.exists(Cells(i, 1).Value) Then myDic.Add Cells(i, 1).Value, Cells(i, 2).Value End If と、3行も費やして重複のチェックをしなくとも myDic(Cells(i, 1).Value) = Cells(i, 2).Value のわずか一行で済むということですよね?

  • VBAからのHYPERLINK関数のアドレス取得法

    いつもお世話になっています。Excel 2003のVBAについてご質問させてください。 あるセル上に、下記のように別名が指定されたHYPERLINK関数があります。 =HYPERLINK(配置先, ファイル名) 現在、VBAよりHYPERLINK関数が指し示す配置先(アドレス)を取得しようと思っています。 これを取得するにはどうすれば良いでしょうか? なお、以下のような付加条件があります。かなりワガママだとは自覚していますが、 なにとぞお知恵をお貸しください。 (1)「配置先」には、実際には複雑な分岐等があり、これを生成するロジックのVBA化は困難 (2)「配置先」だけ別セルに書き出すことは出来なくはないが、今回は避けたい (3)Excel 2010でも動作する必要がある。 (3)についてはこちらで動作確認致しますので、Excel 2003での情報をお願いします。

  • EXCELでのリスト作成について

    このサイトでこのようなマクロを教えてもらいました。 そこでこれはシートの左側からリストシートに表示していくのですが、右側からリストにしていく方法はないでしょうか? よろしくお願いします。 ------------------------- Sub テスト() ActiveWindow.WindowState = xlNormal Dim i As Integer, r As Range With Worksheets("リスト") .Hyperlinks.Delete .Range("B4:B65536").ClearContents For i = 2 To Worksheets.Count Set r = .Cells(((i - 2) Mod 20) + 4, 2 + Int((i - 2) / 20)) r.Value = Worksheets(i).Name .Hyperlinks.Add Anchor:=r, Address:="", _ SubAddress:=Worksheets(i).Name & "!A1" Next i End With Columns("B:B").EntireColumn.AutoFit End Sub -------------------------

  • 数行ごとの折り返しについて

    このようなマクロを作りました。 ------------------------------------------------ Dim i As Integer, r As Range With Worksheets("リスト") .Hyperlinks.Delete .Range("B4:B65536").ClearContents For i = 2 To Worksheets.Count Set r = .Cells(i + 2, 2) r.Value = Worksheets(i).Name .Hyperlinks.Add Anchor:=r, Address:="", _ SubAddress:=Worksheets(i).Name & "!A1" Next i End With ------------------------------------------------ これだけでは、B列に並んでしまうだけなのでこれを20データごと次の列に入力できるようにしたいのですがいろいろ調べたのですがわかりませんでした。 わかる方がいましたらよろしくお願いします。

専門家に質問してみよう