• 締切済み

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

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセルVBAでは Sub test01() Worksheets("Sheet3").Hyperlinks.Add Anchor:=Worksheets("Sheet3").Range("A1"), _ Address:="http://www11.plala.or.jp/koma_Excel/contents1/mame1006/mame100601.html", TextToDisplay:="test" End Sub でうまくいきました。ご参考に。 URLとか大丈夫ですか、ttpになっているが。VBAではSelectなどが続かない場合は・・Add()の括弧は不要ですが、VB2005では引数部の前後に()が要りましたかな。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

お使いの開発環境はVSOTではなくVB2005なのでしょうか AnchorにはRangeオブジェクトでいいと思いますからこの構文でよさそうです VB2005で Excelを表示させているならいいのですが非表示でやる場合や自動でExcelを閉じる場合など Marshal.ReleaceComObjectで参照したComオブジェクトを全て開放しないとExcelのタスクが残ってしまいますよ Excelの暗黙的に参照するオブジェクトまで面倒見ないといけないので大変ですが Application,Workbooks,Workbook,Sheets,Worksheet,Range,HyperLinks,HyperLink などが思い浮かびますが 全てをReleaseしたつもりでも当方の環境ではタスクが残ってしまいました … 他にあるのかなぁ Excelへの参照設定とインポート定義を下記のようにしています Imports Microsoft.Office.Interop Imports Microsoft.Office.Interop.Excel Imports System.Runtime.InteropServices Imports System.Runtime.InteropServices.Marshal 以下が当方でテストしたコードです   Dim oXL As New Excel.Application   Dim oWBs As Workbooks   Dim oWB As Workbook   Dim oWSs As Sheets   Dim oWS As Worksheet   Dim oRg As Range   Dim oHLs As Hyperlinks   Dim oHL As Hyperlink   oXL.Visible = True   oWBs = oXL.Workbooks   oWB = oWBs.Add()   oWSs = oWB.Worksheets   oWS = CType(oWSs(1), Worksheet)   oRg = oWS.Range("A1")   oHLs = oWS.Hyperlinks   oHL = oHLs.Add(Anchor:=oRg, Address:="URL", _     TextToDisplay:="Test")   oXL.DisplayAlerts = False   oWB.SaveAs("C:\Test01.xls")   oWB.Close()   oXL.Quit()   ReleaseComObject(oHL)   ReleaseComObject(oHLs)   ReleaseComObject(oRg)   ReleaseComObject(oWS)   ReleaseComObject(oWSs)   ReleaseComObject(oWB)   ReleaseComObject(oWBs)   ReleaseComObject(oXL)   oHL = Nothing   oHLs = Nothing   oRg = Nothing   oWS = Nothing   oWSs = Nothing   oWB = Nothing   oWBs = Nothing   oXL = Nothing

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

 rg = fndArea.Find(findText, xlsheet.Range("A65536"), Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole, _     Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False) VB2005でExcelファイルを開き、FINDメソッドを使用する際に書いた コードです。 例えば xlLookAt:=xlWhole が Excel.XlLookAt.xlWhole になるように、ちょっと書き方が変わるようです。 (最近初めたばかりで詳しくはないですが) ご参考になれば。

関連する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を離れていまして思い出せません。すみません。

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

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

  • excel2000vba ハイパーリンク

    excel2000のVBAのプロシージャを教えてください。 写真にあるとおり、sheet1の A1からA200セルまでに、 フルパスのアドレス、0、空白 が入っています。 ここで、フルパスが入っているセルを 下記の条件でハイパーリンクに置きかえたい。 1.フルパスの入っているセルをハイパーリンクのセルに変更する。 2.ハイパーリンクは、ハイパーリンクでも、ハイパーリンク関数でもいい 3.そのフルパスをハイパーリンクのリンク先アドレスにする。 4.表示文字列を ★ としたいです。 また、0が入っているセルは、空白に変更させたい。 以上がやりたいことです。そして下記プロシージャでトライしてみましたがエラーとなりうまくいきません。 プロシージャの修正もしくは、最適なプロシージャがあれば教えて欲しいです。 よろしくお願いします。 Sub test() Dim trange As Range Dim i As Long For i = 1 To 200 trange = ("A" & i) If trange.Value = "" Or "0" Then trange.Value = "" Else Worksheets("Sheet2").trange.Hyperlinks.Add anchor:="★", Address:=trange.Value End If 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を使用しております。 よろしくお願いします。

  • マクロを使ってハイパーリンクを作りたい

    エクセルで下記作業をマクロで行いたいのですが、 途中までつくれたのですが、うまくいきません (1)sheet2をコピーしてsheet2(2)を作る (2)sheet2(2)のsheet名を任意の名前(例222)にかえる (3)sheet1の任意のセルから新しく作った222へハイパーリンクを張る 下記のようなマクロを作りましたが ハイパーリンクを張るとことでうまく行きません どうすればよいのでしょうか。。。 助けてください sub 新しいシートの追加() 'dim sheet名 as string シート名 = InputBox("新しいシート名を入力してください", "シート名の指定") If シート名 <> "" Then Sheets("Sheet2").Select Sheets("Sheet2").Copy After:=Sheets("Sheet2") ActiveSheet.Name = シート名 Sheets("Sheet1").Select Range("A3").End(xlDown).Offset(1).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ シート名 TextToDisplay:=シート名 Selection.Hyperlinks(1).SubAddress = シート名 End If End Sub

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

    いつもお世話になります。 昨日、エクセルで、あるマスターブック内のシートのコピーをサブブックにコピーし、マスターブックの一覧内にハイパーリンクで繋ぐというものを作成しましたが、このリンクだと、一覧内に書き込まれるハイパーリンクはフルアドレスの書き込みなります。 これを、ダイアログにて保存先、保存名をきいて保存したのちに、ハイパーリンク用として一覧に書き込むファイル名を聞いてくるようにしたいと思います。 昨日作ったモジュールは下記の通りです。 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

  • EXCEL2000VBAでハイパーリンクの有無を調べたい。

    おはつです。どなたか、知ってらっしゃる方がいらしゃいましたら、よろしくお願い致します。 [環境] Windows2000 EXCEL2000 [質問] ・下記のソースで、ハイパーリンクが設定されている項目 をcmdボタンイベントから設定を外しました。しかし、ハイ パーリンクが元データに設定されていない場合、Errが返り ます。 selectで指定されたセルのハイパーリンク有無を調べる 方法を教えて頂けないでしょうか? If Not IsNull(Trim(Range("E105").Text)) Or Trim(Range("E105").Text) <> "" Then sURL1 = Trim(Range("E105").Text) Range("E105:AG108").Select Selection.Hyperlinks(1).Delete End If

  • セルに入力されているアドレスでハイパーリンクを開き

    http://officetanaka.net/excel/vba/tips/tips42.htm これを同じようにしてるのですが Sub test() Range("a1").Value = "http://www.goo.ne.jp/" Range("a1").Hyperlinks(1).Follow NewWindow:=True End Sub これだとエラーになるのですがどうしてでしょうか? 「インデックスが有効範囲にありません。」 と言われます。 セルに入力されているアドレスでハイパーリンクを開きたいです。

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

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

  • Excel2000 ハイパーリンクを削除するマクロ

    どなたか教えてください。 Excel2000で、URLやメールアドレスを入力すると勝手にハイパーリンクにされてしまいます。 これをハイパーリンクとならないようにするマクロを作りたいのです。 具体的には、特定のセルにだけ、URLやメールアドレスを入力する可能性が あるという条件で、 下記のようにしました。 Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False nowcell = ActiveCell.Address Target.Hyperlinks.Delete With Range("O14:AI14,L41:AI41") .IndentLevel = 1 .VerticalAlignment = xlCenter .Font.Name = "Arial" .Font.Size = 16 End With Range(nowcell).Activate Application.ScreenUpdating = True End Sub セルが変更されるたびに、O14:AI14,L41:AI41のハイパーリンクを削除して、勝手に 変更された書式を特定の書式に戻すという処理をしています。 ただ、特定の書式を設定しているため異なる書式のセルに同じマクロを使うと、 書式が乱れてしまいます。 それで、ハイパーリンクが削除される前のセル書式を保存しておいて、ハイパーリンクを削除した後に、 復元するということをしたいのですが、どうすればよいでしょうか? イメージ的には、 org_format=target.font nowcell.font=org_format というようにしたいところなのですが・・・ 良いアイデアをご教授ください。 宜しくお願い致します。

専門家に質問してみよう