• 締切済み

wordでのhyperlinkマクロ作成方法

通称poppyといいます。 excelでは各シートのマクロ定義で Private Sub Worksheet_followhyperlink(ByVal Target As Hyperlink) Application.Goto reference:=ActiveCell, scroll:=True End Sub と定義し、 thisworkbookでは Private Sub Worksheet_followhyperlink(ByVal sh As Object, ByVal Target As Hyperlink) Application.Goto reference:=ActiveCell, scroll:=True End Sub と定義すればhyperlinkでジャンプした先の画面表示では指定したセルが画面左上に表示されます。 このような方法をwordで実行したいのですが、マクロの作成方法を教えて下さい。 よろしくお願いいたします。

みんなの回答

回答No.1

Excelのイベントプロシージャを使った動作と似たことを、 Wordで実現したいのでしょうか? http://kabu-macro.com/word/a-o/event_procedure.html どのようなリンク先を開きたいのかによって、おそらくは 違った対応になるかと思います。 とりあえず、Excelでのジャンプ先の指定方法と、Wordの ジャンプ方法の違いを見比べてみてください。 ●Excel http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.excel._application.goto(v=office.11).aspx ●Word http://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.word.document.goto(v=VS.80).aspx この違いを認識したうえで、Wordのイベントプロシージャ として、ハイパーリンクをクリックしたときに実行される ような機能はありませんので、希望しているようなことは ジャンプ先を直接指定するしかないということになります。 簡単な例 Sub Macro1()  '単純なブックマーク先「あ」にジャンプするマクロ  Selection.GoTo What:=wdGoToBookmark, Name:="あ" End Sub 私は、WordやExcelでのマクロについて詳しく説明できる ほどスキルがないので、具体的な作成方法を提示できない ことから、補足などされても追加回答はしません。 もっと具体的なことを書いた新規質問をして、他の回答者 からのアドバイスをお待ちください。

gats9999
質問者

お礼

早速の回答ありがとうございます。 私もマクロについて詳しくないので、この提示された内容を検討するとともに、少し時間がかかりますが具体的な補足をさせていただきます。

gats9999
質問者

補足

1.excelでの前提条件(マクロの登録)   excelシートのではツールバーからツールーマクローvisual baisic editerを選択し、   前回提示させていただいた内容を記入します。 2.マクロを使用する実際のシートの作成方法   目次シートがありこの目次にツールバーから挿入ーハイパーリンクを選択します。   この時ハイパーリンク先のシートとcellを指定します。  上記のようにハイパーリンクを設定して、設定したハイパーリンクをクリックすると  指定先にジャンプするとともに指定先のcellが画面左最上位に見えるようになります。  マクロ登録をしないと、ハイパーリンクを設定してもジャンプ先画面が最上位になりません。  wordでのハイパーリンクをマクロ無しで設定するとやはりジャンプはするが画面左最上位に行きません wordでのハイパーリンク設定でジャンプ先が画面左最上位になるようにしたいと思っています。  ご協力お願いいたします。 

関連するQ&A

  • エクセルのマクロ設定について

    クリックすると、日付が表示されるように、下記のマクロ設定してあります。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("C4:C30")) Is Nothing Then Exit Sub If ActiveCell = "" Then ActiveCell = Date Cancel = True End If End Sub C4~C30とG4~G30の2箇所にしたいのですが、式はどうしたらいいのでしょうか。 よろしくお願いします。

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

  • 他Book(シートモジュール)のマクロを実行したい

    ご教授ください。 Book1 WorkSheets(1)で UserForm1. TextBox1 TextBox2 エクセルにハイパーリンクを設定 Application.Run "Book2.xls!.Worksheet_FollowHyperlink" →エラー1004 マクロが見つかりません。 Book2 WorkSheets(2)の シートモジュールに    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 行番号 = Target.Range.Row UserForm1.TextBox2.Text = Cells(行番号, 5).Value → エラー424 オブジェクトが必要です UserForm1.Show Book1で開いたUserForm1に送りたく、いろいろ試したのですがどうしても出来ません。 よろしくお願いいたします。 使用 Excel:Excel2003、使用 OS:WindowsXP

  • マクロについて

    マクロ初心者です。 エクセルのマクロで下記は何を示しているのでしょうか。 困っているのでもなんでもないのですが、周りにマクロが判る人がまったく居ないので質問させてもらいます。 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) End Sub

  • エクセル マクロ 初心者です

    エクセルマクロ初心者です。 以下の2つの Private Sub Worksheet_Change(ByVal Target As Range)を1つのシートで実行させたいのですが、 当方、初心者なので組み合わせ方が分かりません。 よろしくお願いします。 ===No1=== Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = StrConv(Target, vbUpperCase) Application.EnableEvents = True End Sub ===No2=== Private Sub Worksheet_Change(ByVal Target As Range) Dim Ans As Integer If Target.Count = 1 Then Ans = MsgBox("コピーは禁止!!", vbCritical) MsgBox "データを消去します。" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If If Target.Count = 1 Then Exit Sub Else MsgBox “複数セルのコピー禁止!" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If End Sub ------------ 上記の2つを1つのシートで動作させたいのですが、うまくいきません。 単体では、動作します。

  • このマクロの説明をお願いします

    Dim buf As String Private Sub CommandButton1_Click() End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim tmp As Variant Application.EnableEvents = False tmp = InStr(2, buf, "$", vbTextCompare) tmp = Right(buf, Len(buf) - tmp) If buf = "$B$" & tmp Then Range("C" & tmp).Value = Range("C" & tmp).Value + Range("B" & tmp).Value Range(buf).Select End If Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) buf = ActiveCell.Address End Sub どうやらB列の各セルに入力がされた場合、隣接するC列のセルに加算していくマクロのようです。 なんですが、 InStr関数、Right関数、Len関数あたりでやっていることがよくわかりません。 Private Sub CommandButton1_Click()は必要なのでしょうか? あと、 もっとシンプルなマクロができるようでしたらご教授ねがいます。

  • 【ExcelVBA】 既にあるマクロの間で実行させたいのです。

    こんにちは 下のマクロを・・・ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "●入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "●" Then Target = "" Else Target = "●" End If End If End Sub このマクロの■ここで実行■で実行させたいのですが、どのようにしたらよいでしょう。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$D$1" Then Exit Sub Cancel = True Columns("A:U").Select Range("T1").Activate Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Selection.Replace What:="ああ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("D1").Select End Sub ■ここで実行■ Private Sub Worksheet_Change(ByVal Target As Range) strAddress = "A1:A2000" On Error GoTo ErrorHandler If Target.Count > 1 Then GoTo ErrorHandler If Not Intersect(Target, Range(strAddress)) Is Nothing Then Application.EnableEvents = False Range(strAddress).ClearContents Target.Value = "●" End If ErrorHandler: Application.EnableEvents = True End Sub

  • VBA マクロを動かさない

    (1)ある行のセルを変更したら動くマクロがあります。  Private Sub Worksheet_Change(ByVal Target As Range) (2)ある行のセルに数値を入れるマクロがあります。  Private Sub CommandButton_Click() (2)のマクロが動くと(1)がその後に発動して上書きをしてしまうようです。 これを発動させないようにスキップするにはどうしたらいいのでしょうか?

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • Excel2003のハイパーリンクでwebメニューを開かなくする方法

    こんにちは。 検索してみたのですが、見つからなかったので質問します。 (以前に同じ質問がありましたら、ご勘弁ください) Excel2003を使用しておりますが、ハイパーリンクで他のファイルを開いた際、 webメニューが開いてしまいますが、開かなくする方法はありますか? 同一ファイル内の他のシートへのハイパーリンクでしたらwebメニューは開かないのですが... とりあえず、Worksheetのイベントとして、 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Application.CommandBars("Web").Visible = False End Sub と設定すれば、開かなくなりますが、オプション設定等で、設定することはできないのでしょうか? どうかご教示ください。 よろしくお願いいたします。

専門家に質問してみよう