マクロで行をコピーしてハイパーリンク先に貼り付ける方法は?
- マクロを使用してExcelの行をコピーしてハイパーリンク先のファイルに貼り付ける方法について質問です。
- 以前教えていただいたマクロを使用して、6行程度の表は問題なく作業できましたが、行が増えてくるとエラーが発生します。
- エラーの内容は「実行時エラー9:インデックスが有効範囲にありません」と表示されます。
- ベストアンサー
マクロについての質問です
前回、このサイトにて教えてもらったマクロにて、不明な点が出てきましたので再度質問させていただきます。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ ボタン 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 の行が黄色に点灯していました。 これはどういう内容でしょうか?どの作業が悪いのでしょうか?私としては、この表のからリンクするファイルを 増やし、そのファイル名をフィルコピーにて表に陳列させたいと考えていました。 もし何か良い作業があれば教えていただきたいです。すみませんがよろしくお願いします。
- オフィス系ソフト
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 いまのままの数式では、難しい内容になってしまいます。前回、私が書いたように、本来は、ハイパーリンクではなくても良かったのです。以下の場合は、ハイパーリンクを設定づけています。ハイパーリンクがないものは、その都度、ハイパーリンクを設定しています。 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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 前回の、書き込み(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 一応、このぐらいのアドバイスだけはしておきます。
- web2525
- ベストアンサー率42% (1219/2850)
ハイパーリンク先のBookがないだけじゃ?
関連するQ&A
- excel マクロコードを教えていただきたいです
マクロ初心者のため、単純な動作しか分からず困っています。 以下の表とマクロコードを確認していただき、教えていただきたいです。 ファイル【Book1】の表 A B C D E F G 1 data1 ボタン1 2 data2 ボタン2 3 data3 ボタン3 4 data4 ボタン4 5 data5 ボタン5 6 data6 ボタン6 ・ ・ ・ ・ ・ ・ ※Gの列にはハイパーリンクが並んでいます。 ※ハイパーリンクにて各ファイル(data1・data2・data3・・・・)が開きます。 ※各行の右端にはフォームのボタンを設置しています。 ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ Sub Macro1() Range("G1").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True Windows("Book1.xls").Activate Range("A1:F1").Select Selection.Copy Windows("data1.xls").Activate ActiveSheet.Paste End Sub ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ 今の動作としては、ボタン1を押す事でファイル”Book1”のG1のハイパーリンク(data1.xls)が開き、 ”Book1”のA1からF1をコピーして、data1のsheetに貼り付けています。 これで、当初は5行ぐらいの表でしたので、毎回、上記の行番号を変更したコードを入力し、各ボタンに 登録していました。ただ今後、この表の行が多くなるとの事で、毎回、この作業を行うわけにもいかず、 何か良い案(マクロ)があれば教えていただきたいです。 やりたい事としては、マクロの実行にて、ハイパーリンクが立ち上がりその行の内容を、その立ち上がった ファイルのsheet2のセルA1:F1に貼り付けたいと思っています。 例としては、立ち上げたい行(セル)をクリックしておいて、ボタンを押すと上記のマクロが開始するなど・・・。 出来もしないのに生意気で申し訳ありませんが、教えていただけると助かります。よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- EXCELマクロで左列に値のある行まで選択
EXCELのマクロの記録を利用して簡単なマクロを作りたいのですが、 やりたいことは、表の最上部のセルにVLOOKUP関数を設定し、 フィルハンドルでWクリックするように表の最下部までコピーしたいのですが、 マクロの記録では、貼り付けする先のセルが固定されてしまい、 表の行数が変動する場合はそのまま使えません。 左列に値のあるセルを判断してその行番号までを選択できれば解決するのですが、 お詳しいかたお教えください。 ちなみにマクロの記録の構文では <フィルハンドルでクリックする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.AutoFill Destination:=Range("H3:H27") Range("H3:H27").Select End Sub <範囲選択しコピー貼り付けする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.Copy Range("H4:H27").Select ActiveSheet.Paste End Sub
- ベストアンサー
- その他MS Office製品
- excel マクロコードを教えていただきたいです
マクロを使うのが初心者のため、詳しい方に以下のマクロ コードを教えていただきたいです。 ある表の一番右の列にハイパーリンクが並んでいます。 そのハイパーリンクにて、各Bookファイルが開くのですが ハイパーリンクを一回押すことで、その一行(数セル)を、 開いた別ファイルのsheet内に貼り付けたいです。 今は方法がわからないため、ハイパーリンクにてファイル だけ開き、表の一行をコピーして、そのファイル内に貼り 付けています。 すみませんがわかる方教えていただきたいです。よろしく お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルでのマクロについての質問です
毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面1のようにC1、D1セルの数式をフィルでコピーしたマクロを登録しました。画面2のようにデータが多くなるとC5、D5までしかコピーされません。最初はC1、D1だけに数式を入力してマクロ実行後、フィルでコピーしていましたが面倒な為、現在は行数を多く設定していますが無駄に数式が入るためにデーターが重くなります。マクロでB列の最下セルを検索しその列までC,Dセルをコピーというなマクロが出来るなら教えて頂きたいです。VBAの知識を必要とすると思いますがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- マクロについて質問です。
office2003を使用しています。 sheet1のデータをコピーし、sheet2の表にsheet1のデータを張り付けるマクロを作成して欲しいと言われました。 ・コピー元のsheet1はセルの結合が有ったり無かったりの表データになってます。 ・貼り付け先のsheet2はセルの結合が無い表です。 ・sheet1からsheet2への貼りつけは全てではなく、抜粋されたデータになります。 ・貼り付け先の列も変わっています。 ・sheet2には数式が入った列が加わり、小数点第二位表示です。セルの書式は右寄せや中央、桁区切りがあります。 ・sheet1は可変データです。 2~3位で終わるのもデータの時もあれば20まであったりする時もあります。 sheet2の表の罫線はデータの分だけ引きたいと思っています。 マクロは初心者同然で自動マクロ程度のレベルです。 わかりにくい説明で申し訳ありませんがご教授ねがいます。 sheet1 A B C D E F G 1 No. 名前 上)住所 年齢 商品 金額 担当者 下)電話 2 秋田 1 アイウエオ 20 A 10,000 タナカ 3 123456 4 鹿児島 35 D 15,000 ヨシダ 2 カキクケコ 5 987654 ※sheet1はC列以外の2・3、4・5行はセルが結合されています。 2行で1人のデータになります。 ↓コピー貼りつけをする sheet2 A B C D E F G 1 No. 担当者 名前 住所 商品 金額 原価 2 1 タナカ アイウエオ 秋田 A 10,000 7,500.00(数式が入っている) 3 2 ヨシダ カキクケコ 鹿児島 D 15,000 6,800.00
- ベストアンサー
- オフィス系ソフト
- マクロの実行について 質問です。
マクロ勉強中です! 何時間も調べておりますが、 どうしても分からないので お教え下さい(;_;) 別シートの都道府県が混在するデータの中から、 3列の付属語が『下関』のものだけをコピーして、シート1に貼り付けるマクロを マクロの記録で 『下関』 というタイトル?にして作りました。(下記) これを実行するときに、マクロ名からではなく、 下の表の R3C8セルの、『下関』 というハイパーリンクをクリックで 実行される・・・・ そんなふうにするには、どうしたらいいのでしょうか? ご回答を おまちしております。よろしくお願いします! Sub 下関() ' ' 下関 Macro ' ' Keyboard Shortcut: Ctrl+a ' ActiveWindow.SmallScroll Down:=-9 Range("B3").Select ActiveWindow.SmallScroll Down:=117 Range("B3:F137").Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp ActiveWindow.SmallScroll Down:=-9 Range("H3").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True Selection.Copy Sheets("Sheet1").Select Range("B3").Select ActiveSheet.Paste Range("C3").Select End Sub
- ベストアンサー
- Windows Vista
- EXCELのマクロにて
EXCELのにて連続したデータを入力したデータベースがあります。(行が5000、列がAAまで) このデータベースのデータの最終行だけを指定して違うシートにコピー・貼り付けがしたいのです。 マクロにてこのような作業をするときにはどういった文をかけばよいですか。
- ベストアンサー
- オフィス系ソフト
- エクセル 行を追加したら自動マクロでコピー
A列に行を追加したら自動マクロで(1)と(2)を行いたいのですが、 どのようなマクロを作成すれば良いのでしょうか? (1)C1列~E1列を選択 (2)C1列~E1列をオートフィルで下までコピー
- 締切済み
- その他MS Office製品
- 【再】エクセル2013 マクロをご教示ください
Sheet1で選択しているセルの行をSheet2に転写したいです。 Sheet1とSheet2の4行目に見出し。 Shet1にはA~U列までデータがあります。(途中空白セルの場合もあり) Sheet1の5行目以降の、あるセルを選択してマクロを実行すると Sheet1のC~S列までをSheet2のA~Q列へコピペしたいです。 Sheet1は H列に必ずデータがあるので それらを最終行の判断基準とします。 Sheet1での選択セルは複数の場合もあります。 ただし、同じ行のセルを複数選択しても Sheet2への貼り付けは1行とします。 マクロを実行する度に、Sheet1での選択セルの該当行が Sheet2へ追加されるようにしたいです。 (Sheet2へコピペされたデータは残します) また、Sheet2への貼り付け内容が同じだった場合は 注意喚起のため メッセージで 「重複データが存在します」を表示したいです。 重複の判断基準はSheet2の B、D、F列とします。 宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
- オートフィルで抽出後削除するマクロ
いつもお世話になっております。 あるエクセルの表(1行目見出し、2行目以降データ)で、 A列は1~10がランダムに入っています。 (約4,000行、作業の度に変化します) オートフィルでA列を『2以上』で抽出、 (ここまでのマクロは判ります) 見えてる行を全削除(1行目の見出しは取っておく) はどのようなマクロを記述したらいいでしょうか? よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
ご回答ありがとうございます。 おっしゃる通り'ハイパーリンクがない'と出てきます。 ただ申し訳ないですが、なぜかがわかりません。 G列のセルをクリックすると、ちゃんと"&H3&".xls"の ファイルは開きます。ちなみにこのセルには =HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)の 関数も入っているのですが、これがまずいとかもあるの でしょうか? ど素人で申し訳ありません。
補足
ご回答ありがとうございます。 おっしゃる通り'ハイパーリンクがない'と出てきます。 ただ申し訳ないですが、なぜかがわかりません。 G列のセルをクリックすると、ちゃんと"&H3&".xls"の ファイルは開きます。ちなみにこのセルには =HYPERLINK("\\server\スタッフ\購買\"&H3&".xls",H3)の 関数も入っているのですが、これがまずいとかもあるの でしょうか? ど素人で申し訳ありません。