Excel VBAでハイパーリンクの追加時にエラーが発生する

このQ&Aのポイント
  • Excel VBAでファイルに対するハイパーリンクを追加するコードを書いていますが、実行時にエラーが発生します。エラーの詳細は「実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。」と表示されます。
  • Excel 2000の環境では正常に動作することが確認されていますが、Excel 2003の環境ではエラーが発生します。バージョンの違いが原因で動作に差が生じる可能性があります。
  • コードの一部には「With ActiveSheet .Hyperlinks.Add Anchor:=.Cells(RowNum, 1), Address:=FilePath End With」という記述があります。RowNumとFilePathには有効な値が入っていることがステップ実行で確認されています。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

2003で試してみましたが、問題なく動作するようです。 FilePathの方は存在しない値を設定しても、エラーにはならないみたい。 ただし、""を設定しておいて実行しようとすると、  実行時エラー '1004'  アプリケーション定義またはオブジェクト定義のエラーです。 となります。 また、RowNumの方は存在しない値(0など)にしておくと、やはり  実行時エラー '1004'  アプリケーション定義またはオブジェクト定義のエラーです。 が出ます。 なので、再度、RowNum及びFilePathの値をチェックしてみるのがよろしいかと… (RowNum、FilePathの値をどのようにセットしているか不明ですが、2000では実行できるとのことなので、計算の元になるデータが違っているとかはないですか?)

cogito29
質問者

お礼

ご回答いただき、ありがとうございます。 ご指摘の点を含めていろいろ試していたのですが、原因はバージョンの違いではなく、ブックを共有していたために処理できなかったということがわかりました。お手数をおかけしました。

関連するQ&A

  • 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の設定が間違っているみたいなので、 いろいろ試してはいるのですが、よく分かりません。 ご教授お願いします。

  • マクロでハイパーリンクを設定するには

    いつもお世話になります アクティブシート内でハイパーリンクを設定したいのですが、どうしても巧くできません シート名 = ActiveSheet.Name で、シートの名前を取得して(アクティブシート名は”9月”です) ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= "シート名" & "!A477", とするとリンク先が[9月A477]にならず [シート名A477]になってしまいます どこが悪いのでしょうか WINXP エクセル2003

  • 【エクセル】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 としました。

  • 【VBA】ハイパーリンクでセルに文字を正しく表示できない。

    【VBA】ハイパーリンクでセルに文字を正しく表示できない。 ハイパーリンクを設定しセルに数値を表示させる場合、 セルにもともと文字が入力されていれば、数値に置き換わります(a)が、 もともと入力されているのが数値の場合、別の数値に置き換わりません(b)。 例) (a)A1セルに「十」という漢字が入力されていたとします。   その時、下記コードを実行すればA1セルの値は「1」に変わります。   Sub test()    ActiveSheet.Hyperlinks.Add _    Anchor:=Range("A1"), _    Address:="http://www.yahoo.co.jp/", _    TextToDisplay:="1"   End Sub (b)一方、A1セルに「10」という数値が入力されていたとします。   その時、上記コードを実行してもA1のセルの値は「10」のままです。 なぜなのでしょうか? お分かりの方、教えてください。 尚、当方Excel2003を使用しております。 よろしくお願いします。

  • エクセルのハイパーリンクで

    いつもお世話になります。 昨日、エクセルで、あるマスターブック内のシートのコピーをサブブックにコピーし、マスターブックの一覧内にハイパーリンクで繋ぐというものを作成しましたが、このリンクだと、一覧内に書き込まれるハイパーリンクはフルアドレスの書き込みなります。 これを、ダイアログにて保存先、保存名をきいて保存したのちに、ハイパーリンク用として一覧に書き込むファイル名を聞いてくるようにしたいと思います。 昨日作ったモジュールは下記の通りです。 Sub Macro2() Dim strFile As String Dim i As Long Dim na As String Sheets(Array("シート1", "シート2", "シート3", "シート4")).Copy strFile = Application.GetSaveAsFilename(fileFilter:="エクセル ファイル (*.xls), *.xls") If strFile = "False" Then Exit Sub ActiveWorkbook.SaveAs strFile ActiveWorkbook.Close Sheets("一覧").Activate ActiveSheet.Hyperlinks.Add Anchor:=Range("B65536").End(xlUp).Offset(1), Address:=strFile, TextToDisplay:=strFile End Sub

  • VBA【初歩的な質問】

    エクセルシートのA列にホームページの名前、B列にそのページのアドレスが入力されております。 A列のページ名にハイパーリンクの情報を結び付けて、B列を削除したいです。 ※A列の名前が青くなっていて、クリックするとそのページに飛んでいくことができて、B列は空白 そのVBAを教えて頂けると助かります。 ページによって最終行が異なるので、最初に最終行を出して、For i で繰り替えしたらいいのでしょうか? HYPERLINKS.Addメソッドというのを使えばいいと思ったんですが、うまくいきませんでした。 Option Explicit Sub Sample() Dim i As Long '1行目からA列の最終行まで繰り返す For i = 1 To Range("A" & Rows.Count).End(xlUp).Row With ActiveSheet.Hyperlinks .Add Anchor:= End With Next i End Sub

  • VBA SORT Applyでエラー

    今日パソコンが新しくなり、office2003から2010になりました。 2003で作成したマクロで、SORTメソッドを書き換え実行したところ、『実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです』とメッセージが… デバッグでみると、Applyのところが黄色になっていました。 何が悪いのか教えてもらえますか? Worksheets("営業所順位表").Activate Application.Calculation = xlCalculationAutomatic '再計算自動 With ActiveSheet.Sort.SortFields .Clear .Add Key:=Range("E3"), Order:=xlDescending End With With ActiveSheet.Sort .SetRange Range("A3:S68") .Header = xlYes .Apply ←ここが黄色に End With

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

    これで大丈夫かな? 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のAdvancedFilterについて with構文で囲まないとオブジェクト定義エラーになる理由

    エクセルでVBAの下記コードで実行すると、実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーとなりますが、 Worksheets("作業用").Activate Worksheets("職員").Range(Cells(6, 1), Cells(Wrow, 12)).AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("a6:c8"), CopyToRange:=Range("d6:z2000"), Unique:=False それを下記のようにwith end with構文で囲むとエラーとなりません。 形式的には同じコードに見えるのですが、実質的に何が違うためオブジェクト定義エラーにならないのでしょうか。 AdvancedFilterに限らず、しばしば同様の原因によるエラーに悩まされていますので、ご教示いただければ幸いです。 Worksheets("作業用").Activate With Worksheets("職員") .Range(.Cells(6, 1), .Cells(Wrow, 12)).AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("a6:c8"), CopyToRange:=Range("d6:O2000"), Unique:=False End With