こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

マクロについての質問です

前回、このサイトにて教えてもらったマクロにて、不明な点が出てきましたので再度質問させていただきます。

∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
                          ボタン
 A  B  C  D  E  F  G    H
                 data1    
                 data2  
                 data3    
                 data4  
                 data5  
                 data6  
                   ・    
                   ・    
                   ・    
※Gの列にはハイパーリンクが並んでいます。
※ボタン押下時に選択しているセルの行番号を取得し、その行のA~F列をコピーして、ハイパーリンクで開いた
ファイル(date・・・)にはりつける。
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
この作業のマクロを教えていただき、以下のマクロが出来ました。

Sub book()
Dim col As Integer '選択行No取得用変数

Windows("book.xls").Activate
col = ActiveCell.Row '現在選択している行No格納
Range(Cells(col, 1), Cells(col, 6)).Select '該当行のA~F列選択
Selection.Copy '選択範囲コピー

Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True '該当行のリンク開く
Sheets("Sheet2").Select '貼り付けシートの選択
Range("a2").Select '貼り付けセルの選択
ActiveSheet.Paste '貼り付け

End Sub

このマクロで、もともと作成していた6行程度の表では何の不自由も無く作業できました。
次にこの表の行が大量に増えてきましたので \\server\スタッフ\購買 フォルダーに、連続した番号のファイル
(date1・date2・・・・date10)を作成し、上記の表の3行目(data1の行)のG列に、ハイパーリンク関数 
=HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)を入力。
その後、3行目H列にdate1を入力し、フィルコピーにてdate1・date2・・・・date10までを作成。
次に3行目G列からフィルコピーにてハイパーリンクdate1・date2・・・・date10までを作成。
これで、単純に上記表を拡大することが出来たと思っていたのですが、今まで使っていたマクロボタンを押すと
“実行時エラー9:インデックスが有効範囲にありません”となってしまい、デバックすると
Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True
の行が黄色に点灯していました。
これはどういう内容でしょうか?どの作業が悪いのでしょうか?私としては、この表のからリンクするファイルを
増やし、そのファイル名をフィルコピーにて表に陳列させたいと考えていました。
もし何か良い作業があれば教えていただきたいです。すみませんがよろしくお願いします。

投稿日時 - 2009-01-21 21:22:22

QNo.4649508

困ってます

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

こんばんは。

いまのままの数式では、難しい内容になってしまいます。前回、私が書いたように、本来は、ハイパーリンクではなくても良かったのです。以下の場合は、ハイパーリンクを設定づけています。ハイパーリンクがないものは、その都度、ハイパーリンクを設定しています。


Sub HyperJumpCopy()
  Dim i As Integer
  Dim Adr As String
  i = ActiveCell.Row
  With Cells(i, 1)
    If .Offset(, 6).Hyperlinks.Count = 0 Then
      If .Offset(, 6).Formula Like "=HYPER*" Then
        Adr = Cells(i, 7).Formula
        Adr = Replace(Adr, "=HYPERLINK(", "")
        Adr = Mid(Adr, 1, InStrRev(Adr, ",") - 1)
        Adr = Evaluate(Adr)
        ActiveSheet.Hyperlinks.Add _
        Anchor:=.Offset(, 6), _
        Address:=Adr
      Else
        MsgBox "ハイパーリンクで飛べません。", 48
        Exit Sub
      End If
    End If
    .Offset(, 6).Hyperlinks(1).Follow NewWindow:=True
    
    If Not ThisWorkbook Is ActiveWorkbook Then
      ThisWorkbook.ActiveSheet.Cells(1).Resize(, 6).Copy _
      ActiveWorkbook.Worksheets("Sheet2").Range("A2")
      ThisWorkbook.Activate
    End If
  End With

End Sub

投稿日時 - 2009-01-22 23:11:32

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

こんにちは。

前回の、書き込み(NO.4636482)では、ご自分が分かるレベルのマクロだけにコメントをつけて採用されたようですから、私などの書き込みは理解されないかもしれませんが、そのコードでは、ハイハーリンクを読んではいないように思います。G列にあるのは、ただの数式のはずです。通常、最低でもハイパーリンク・オブジェクトがあるかぐらいののコードは入れてもよいはずですが。

この4行をつけてみると、'ハイパーリンクがない'と出てくるのではないでしょうか。

If Cells(col, 7).Hyperlinks.Count = 0 Then  '*
MsgBox "ハイパーリンクがありません。", vbCritical '*
Exit Sub '*
End If '*
Cells(col, 7).Hyperlinks(1).Follow NewWindow:=True

一応、このぐらいのアドバイスだけはしておきます。

投稿日時 - 2009-01-22 11:54:49

補足

ご回答ありがとうございます。
おっしゃる通り'ハイパーリンクがない'と出てきます。
ただ申し訳ないですが、なぜかがわかりません。
G列のセルをクリックすると、ちゃんと"&H3&".xls"の
ファイルは開きます。ちなみにこのセルには
=HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)の
関数も入っているのですが、これがまずいとかもあるの
でしょうか?
ど素人で申し訳ありません。

投稿日時 - 2009-01-22 18:47:05

お礼

ご回答ありがとうございます。
おっしゃる通り'ハイパーリンクがない'と出てきます。
ただ申し訳ないですが、なぜかがわかりません。
G列のセルをクリックすると、ちゃんと"&H3&".xls"の
ファイルは開きます。ちなみにこのセルには
=HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)の
関数も入っているのですが、これがまずいとかもあるの
でしょうか?
ど素人で申し訳ありません。

投稿日時 - 2009-01-22 20:47:02

ANo.1

ハイパーリンク先のBookがないだけじゃ?

投稿日時 - 2009-01-21 21:52:10

あなたにオススメの質問