- ベストアンサー
ExcelのSheetの情報を使用して別のSheetを表示する方法と、Sheet名の情報を採集する方法について
- ExcelのSheetの情報を使用して別のSheetを表示する方法と、そのためにマクロを使用する方法について説明します。また、Sheet名の情報を採集する方法についても解説します。
- ExcelのSheetの情報を使用して別のSheetを表示する方法として、マクロを使用することが可能です。具体的なマクロの書き方についても説明します。
- ExcelのSheetの情報を使用して別のSheetを表示するためには、マクロを使用すると便利です。また、Sheet名の情報を採集する方法についても解説します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい。式間違ってますね^ ^;正しくは =HYPERLINK("[C:Mydoc\A\"&A2&"]'"&B2&"'!a1",B2) 『&』が1コ余計でした... ついでに。 マクロが置いてあるBookと同じフォルダ内のxlsBookをリストアップします。 とりあえずサンプルなので新規Sheetを追加して書き出します。 Sub sample() Dim fol As String Dim fnm As String Dim sh As Worksheet Dim i As Long, n As Long Dim v(), x() fol = ThisWorkbook.Path & "\" If MsgBox(fol & " の処理を行います。OK?", vbOKCancel) = vbCancel Then Exit Sub With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With fnm = Dir(fol & "*.xls") Do Until Len(fnm) = 0& If Not fnm Like ThisWorkbook.Name Then With Workbooks.Open(Filename:=fol & fnm, updatelinks:=False, ReadOnly:=True) i = i + 1 For Each sh In .Worksheets n = n + 1 ReDim Preserve v(1 To 1, 1 To n) ReDim Preserve x(1 To 1, 1 To n) v(1, n) = fnm x(1, n) = "=HYPERLINK(""[" & fol & fnm & "]'" _ & sh.Name & "'!a1"",""" & sh.Name & """)" Next sh .Close savechanges:=False End With End If fnm = Dir() Loop If n > 0 Then With Worksheets.Add .Range("a1").Resize(n).Value = Application.Transpose(v) .Range("b1").Resize(n).Formula = Application.Transpose(x) End With End If With Application .Calculation = xlCalculationAutomatic .EnableEvents = True .ScreenUpdating = True End With MsgBox i & " Books & " & n & " Sheets" & vbLf & "処理終了" End Sub うまくいかなかったらごめんネ^ ^;
その他の回答 (1)
- pauNed
- ベストアンサー率74% (129/173)
こんにちは。表ができている状態であれば、HYPERLINK関数を使えば比較的簡単だと思います。 C2セルに=HYPERLINK("[C:Mydoc\A\&"&A2&"]'"&B2&"'!a1",B2) な感じで。 マクロ処理の場合も式を埋め込むようにしたらいいかと思います。 >sheet名の情報を採集 するところからつくるとすれば、 ブック数、シート数がそれほど多くなければ 1)特定のフォルダに対してVBAのDir関数を使って1つずつExcelブックを開く。 この時、画面更新やイベントを抑制してマクロの実行速度をあげる。 2)開いたブック内の全シートをForEach...Nextステートメントを使ってループ処理する。 3)書き出しシートを変数に格納しておいて、2行目からBook名と関数を埋め込んでいく。 関数部分は例えば シート.Cells(i,2).Formula = "=HYPERLINK(""[C:Mydoc\A\" & ファイル名 & "]'" _ & シート名 & "'!a1"",""" & シート名 & """)" な感じで。 また、配列を使うスキルがおありなら、さらに処理時間は短縮できると思います。
お礼
回答2でのフォローごていねいに、ありがとうございます。 少し間違いがあったほうがこちらも調査し勉強になります。
お礼
うまくいきすぎました。目的達成150% すばらしいですね。 どうもありがとうございました。