- ベストアンサー
EXCELでのデータベースの作成方法について
AAAというEXCELファイルがあります。 その中にシート「AAA-a」を作成します。 次に「AAA-b」を作成します。というようにどんどん増えていくとします。 次にBBBというEXCELファイルを作成し、その中のA1セルにAAAファイルの「AAA-a」シート名を読み込みそこに「AAA-a」シートまでのハイパーリンクをつけたいです。 A2セルにも「AAA-b」のハイパーリンクというようにどんどん自動で増やしていきたいのですがどうやればいいかわかりません。 多分マクロが一番いいかと思うのですがわかる方がいましたら教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
シートの目次的なブックを作り、リンクを設定したいと言うことと思います。わたしも仕事で夢想した事もありましたが、せず仕舞いでした。 私は素人ですが、本件は難しかった。苦労して息切れ状態で、これを質問者の要望で更にチューニングする力がありませんが、参考までに。 標準モジュールに Sub test01() Dim ws As Worksheet Dim wb1 As Workbook Dim wb2 As Workbook Set wb1 = Workbooks.Open("aaa12.xls") dirname = Dir("aaa12.xls") pathname = ActiveWorkbook.Path ' MsgBox pathname & "\" & dirname Set wb2 = Workbooks.Add i = 1 For Each ws In wb1.Worksheets MsgBox ws.Name sn = ws.Name wb2.Worksheets("sheet1").Cells(i, "A") = sn ActiveSheet.Hyperlinks.Add anchor:=Cells(i, "A"), _ Address:=pathname & "\" & dirname, TextToDisplay:=sn, _ SubAddress:=wb1.Worksheets(i).Name & "!A1" i = i + 1 Next wb2.SaveAs "BBB.xls" wb1.Close wb2.Close End Sub 質問のAAA.xlsに当たるのが、私の場合上記aaa12.xlsです。 質問のBBB.xlsは新規ブックとして、その名のブックを作って保存してます。 本モジュールは新規ブック(Book1)のモジュールの中に 作っています。3つブックを開いています。 >自動で増やしていきたいのですが・・・ 本件はいわゆる「バッチ処理」(注)に当たるもので、AAAにシートを増やした時、即座にBBBファイルにハイパーリンクを登録するものではありません。 -- (注)一区切りのデータ入力が済んで、切りのいい機会に、操作者が起動をかけて、プログラムを実行する方式。 -- Sheets.Addの事象を捉えるイベントはないと思うので(NewSheetイベントがあるがどういうものか分からない) BookのBeforeCloseイベントなどの時に,上記と似た中身の プログラムで、ハイパーリンクを増やすなどすることになるのかと思います。 しかし質問者のVBAの技量が分からないが、理解しヒントを得て、修正してもらえるのかどうか?です。 上記コード自身は、私の環境でテストして動いたので、 「自信あり」にしてます。
その他の回答 (1)
- aa109
- ベストアンサー率11% (36/310)
自動という言葉が出る限り、VBAを使わないと 実現できません データベース(以下DB)とは 単なるオートフィルターを使った程度のものでも 立派なDBになります しかしDBはエクセルでやる場合 よーく仕組みを考えておかないと件数が増え、 使い勝手が悪いと思ってもどうにもならなくなってしまいます またこれらを説明するにはこのスペースでは 不可能でしょう 1冊本を買うことをお勧めします