• ベストアンサー

EXCELでハイパーリンク自動生成

ある管理表を作成しています。これは、管理表、対応表という2種類で構成していますが、管理表のシートの1つのセルに ある言葉を入力すると、その管理表XLSの中に新たな対応表のシートを自動で作成してそのシート内の、ある場所(セル)とシート名にその言葉が自動で作成されるようにしたいのですが、できるのでしょうか?それとも、やはり、言葉入力のあと、手動でシートをコピー作成して、ハイパーリンクを作るしかないのでしょうか?教えて下さい。

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

  • ベストアンサー
回答No.4

削除マクロを実行する時点のA列はどうなっていますか? こちらでは、A列のデータ範囲に空白セルが無いとエラーを起こすようですが、 場所は  Selection.SpecialCells(xlCellTypeBlanks).Select でした。 とりあえず、 Columns("B:B").Select 以下の数行の間に、次の※印の2行を挿入 してみてください。 Columns("B:B").Select On Error GoTo Pfm   '※ Selection.SpecialCells(xlCellTypeBlanks).Select Selection.EntireRow.Delete  Pfm:   '※ あとは―― 見当つきませんが、Excelのバージョンの違いによるのかも知れません。 これでもエラーが出たり処理結果が違う(削除されないシートがあったり、余分に 削除されたり)場合は、結果を具体的にお知らせください。

f-skale
質問者

お礼

おかげさまで、できました。 ありがとうございました。

その他の回答 (3)

回答No.3

> 実際に入力する位置は管理表のAの列にしています。 エラーが発生したのはどの行ですか? シート名以外に次の3か所を書き換えましたか? 削除コマンドの上から6行目を書き換えます。  Columns("B:B").Select  →  Columns("A:A").Select 同じく真中あたりの2行を書き換えます。  For j = 2 To Range("B65536").End(xlUp).Row    If Sheets(i).Name = Sheets("MGR").Cells(j, 2).Value Then     ↓  For j = 2 To Range("A65536").End(xlUp).Row    If Sheets(i).Name = Sheets("MGR").Cells(j, 1).Value Then

f-skale
質問者

補足

すみません、試してみましたが、同じエラーが出て、 デバックの指示が出て、Selection.EntireRow.Delete が黄色表示になります。

回答No.2

正直なところ、マクロにつきましては私も初心者ですので、内容がごちゃごちゃしている上、バグが あるかも知れませんが――   ^^; 前回のと差し替えてください。 <変更内容> 1.ハイパーリンクの設定 2.同一データがある場合は警告 3.その他 ' Private Sub Worksheet_Change(ByVal Target As Range)   Dim i   On Error Resume Next   If Target.Column <> 2 Then Exit Sub   If Target.Row = 1 Then Exit Sub   If Target.Value = "" Then Exit Sub   For i = 1 To Sheets.Count     If Sheets(i).Name = Target.Value Then       MsgBox "同じ名前のデータがあります"       Target.ClearContents       Target.Select       Exit Sub     End If   Next   Application.ScreenUpdating = False   Sheets("Form").Copy After:=Sheets(WorksheetFunction. _         CountA(Range(Cells(1, 2), Cells(Target.Row, 2))))     ActiveSheet.Name = Target.Value     ActiveSheet.Range("B3") = Target.Value   Sheets(Target.Value).Range("C3").Select     ActiveSheet.Visible = True     ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _         SubAddress:="MGR!B1", TextToDisplay:="管理表へ"   Sheets("MGR").Activate     ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:="", _         SubAddress:=Target.Value & "!B3", TextToDisplay:=Target.Value   Application.ScreenUpdating = True End Sub -------------------------------- シートを削除するルーティンは、別プログラムでバッチ処理することにしました。 Visual Basic Editor の [挿入]-[標準モジュール] に、以下をコピーします。 ' Sub DelSheet()   Dim i, j, Chk   Sheets("MGR").Select   Application.ScreenUpdating = False   Application.DisplayAlerts = False   Columns("B:B").Select     Selection.SpecialCells(xlCellTypeBlanks).Select     Selection.EntireRow.Delete   On Error Resume Next   For i = Sheets.Count To 3 Step -1     For j = 2 To Range("B65536").End(xlUp).Row       If Sheets(i).Name = Sheets("MGR").Cells(j, 2).Value Then         Chk = 1         Exit For       End If     Next     If Chk = 0 Then Sheets(i).Delete     Chk = 0   Next   Application.DisplayAlerts = True   Application.ScreenUpdating = True End Sub 任意の時点で、[ツール]-[マクロ]-[マクロ] から DelSheet を選択して実行します。

f-skale
質問者

補足

どうも、ありがとうございます。ハイパーリンクはうまく行きました。シートの削除の方は、やってみましたがエラー1004 重複する選択範囲に対してそのコマンドは利用できません。と出て、うまくいきませんでした。実際、「MGR」を管理表、「Form」を対応表に書き換えているのと、実際に入力する位置は管理表のAの列にしています。

回答No.1

マクロ処理になりますね。 以下はだいぶ手を抜いた例ですが、このような内容でしょうか。 二枚のシートがあるとします。   1枚目の名前は MGR で、管理表です。   2枚目の名前は Form で、対応表の様式です。 1枚目のB列セルに文字入力すると、それと同じ名前の管理表が作成され、その B3にも1枚目で入力された文字が表示されます。 1.次のコードをコピーしてから、MGRシートタブの右クリックメニューの「コードの  表示」を選択します。   Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     If Target.Column <> 2 Then Exit Sub     If Target.Value = "" Then Exit Sub     Sheets("Form").Copy After:=Sheets(Sheets.Count)     ActiveSheet.Name = Target.Value     ActiveSheet.Range("B3") = Target.Value     Sheets("MGR").Activate     Application.ScreenUpdating = True   End Sub 2.開いた画面にコピーしたものを貼り付けて閉じます。 3.以上の操作が終了したら、MGRシートのB1に何かを入力してみてください。 シートの削除までは対応させていません。

f-skale
質問者

お礼

ありがとうございます。マクロ処理かな?とは思ったんですが、マクロが全然分からないので質問しました。もしよければ、シートの削除と相互のハイパーリンクが自動で生成できればとも思うのですが、できますでしょうか?

関連するQ&A

  • excelのハイパーリンクについて教えてください

    ファイル名:シート1のA列に曲名を入力して、そのセルにハイパーリンクを設定して動画が動くように指定しています。 新しくファイル名:シート2を作り、その中のセルに =[シート1.xls]Sheet1!$A$1 と入力しているのですが、曲名は取り込めるのですが、ハイパーリンクの情報が取り込めません。 シート2にシート1で指定した曲名とハイパーリンク情報を取り込む方法があればお教え下さい。 エクセルのバージョンは2002を使用しています。 全くの素人ですが宜しくお願い致します。

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

    エクセル ハイパーリンクについての質問です。 エクセルで元データ用シートと検索用シートを作成したのですが検索用シートにハイパーリンクをかけたいのですが検索するたびに検索結果によってハイパーリンクでとばしたい場所を変えたいのですがそのような事は出来るのでしょうか? 検索用シートの "B1" のセルに「あ」と入力すると元データ用シートの 「あ」ではじまる単語を 検索用シートの "C1" から縦に順番にVLOOUPでひいてきているのですが検索するたびに単語がことなる為、毎回ハイパーリンクでとばす場所を変えたいのですが? 今は、1つのセルには同じ所へのハイパーリンクしかかけられのですが。 それか、オートフィルタであるセルに入力すると自動でオートフィルタがかかるなどでもよろしいのですがいかがでしょうか?

  • excelのハイパーリンクで質問です

    excelのbookでシートが増えすぎて管理しづらい為、一覧表シートを作りハイパーリンクボタンで各シートへ飛ぶようにしようと思うのですが、その際セル参照も行いたいのですが、B列の「最下入力行」とかの指定は可能でしょうか?よろしくお願いします。

  • Excelでハイパーリンクが自動的に設定されないようにする方法は?

     エクセルでセルにメールアドレスやURLを入力すると、当該セルに自動的にハイパーリンクが挿入(設定)されますが、設定不要なシートなのでそのつどハイパーリンクを削除しています。  面倒なのであらかじめシート全体に挿入されないよう設定する方法が分かりません。どなたかご存知の方教えてください。

  • Excelのシートから 1000個ほどのフォルダに ハイパーリンクをつけたい

    Excelのシートから 1000個ほどのフォルダに ハイパーリンクをつけたいのですが、効率の良い方法はないでしょうか 現在の手順は、以下の通りです 1.)対象フォルダ名をコピー 2.)セルを右クリック⇒ハイパーリンクの編集 3.)最近使ったファイルのアドレス履歴から>c:\データ\一覧.xls を選択 [一覧.xls]部分の替りにコピーしたフォルダ名を貼付け⇒[OK] 実際にクリックして、リンクの確認するまで約1分かかっています (1)セルの表示を変えずに、ハイパーリンクだけを一括で編集⇒シートに結合(貼付け)する方法はありますか (2)マクロを含め、何か効率の良い解決策があれば教えて下さい (3)似たシートを作成した経験のある方は、時間短縮のできそうなアドバイスをお願いします

  • Excel97のハイパーリンクについて

    Excel97を使っています。 一覧表があり、ハイパーリンクを使って 同ブック・別シートの詳細へ飛ばしています。 詳細の内容、種類がたくさんある為、 シート分けをせず、1枚のシート内で 離れた場所に詳細内容を作成しておいて、 リンク先を指定する際に、 画面に表示されるセルの場所まで指定したいのですが、 可能でしょうか。 「参照」のセル番地で指定できるのかと思いましたが、 指定したセルがうまく左上にきてくれない為、 画面上にキレイに表示する事が出来ません。 何かいい方法はあるでしょうか? 宜しくお願い致します。 やはり、シーとをそれぞれ作成するしかないでしょうか。

  • ハイパーリンクのコピーについて。

    EXCEL2003使用 2つのEXCELを開いて、2つの関連した別々の表を作成しています。 (仮に各々「A表」「B表」とします。) 「A表」に住所等の一覧をつくり、一覧の各セルにハイパーリンクをして有ります。 そしてその「A表」のハイパーリンクが有るセルを、もう一方の「B表」にコピーをすると、「A表」のセルの周辺のハイパーリンクまでコピーされ「B表」にペーストされてしまいます。 その為、「B表」に有ったの元々のハイパーリンクが、「A表」のハイパーリンクに変更されたり、空白のセルにまで、ハイパーリンクが出来てしまっています。 この無駄なハイパーリンクのコピーを消す方法は有りませんか? お願いします。

  • MS Excelのハイパーリンクに関して

    はじめまして、 Ms Excel2003を使用して、一覧表を作成しているのですが、自動的に、mailto:aaaaa@goo.ne.jpと言うリンクが挿入されてしまって、困っています。 通常ハイパーリンクは、入力した、メールアドレスやhttp://で始まるURLに関して自動的に挿入されると思うのですが、私の場合は、何も入力していないセルにmailto:のハイパーリンクが挿入されてしまっています。 その影響で、作成したExcelファイルが数十メガにもなってしまっています。 ウィルスチェックもしてみましたが、感染はしていませんでした。 どなたか、同じような事例の経験がある方がいらっしゃいましたら、よろしくご教授ください。 お願いします。

  • EXCELのハイパーリンク

    EXCELのハイパーリンクについて教えて下さい。 EXCELにて700件程のハイパーリンクを作成しようと考えていますが数が多いため1件ずつハイパーリンク先を設定するには多くの時間と労力を要しますのであらかじめローカルフォルダ名とファイル拡張子を入力しておき、ファイル名だけを入力すればハイパーリンクを自動設定する方法はないでしょうか? お手数ですがお知恵をお貸し下さい。宜しくお願いします。 例) ・セルA1にローカルフォルダ名又はURLの一部 ・セルB1にファイル名又はURLの一部 ・セルC1にファイル拡張子又はURLの一部 これらを結合(A1&B1&C1)したハイパーリンク先をセルD1に表示すると共にセルD1をローカルフォルダ内のファイル又はサイトを自動的にハイパーリンク設定させる。

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

    エクセルシートにメールアドレスを入力すると自動的にハイパーリンクになってしまいます。 ハイパーリンクにならない方法を教えてください。お願いします。

専門家に質問してみよう