• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel:あるsheet Bからその中の情報で別のsheetを表示する。)

ExcelのSheetの情報を使用して別のSheetを表示する方法と、Sheet名の情報を採集する方法について

このQ&Aのポイント
  • ExcelのSheetの情報を使用して別のSheetを表示する方法と、そのためにマクロを使用する方法について説明します。また、Sheet名の情報を採集する方法についても解説します。
  • ExcelのSheetの情報を使用して別のSheetを表示する方法として、マクロを使用することが可能です。具体的なマクロの書き方についても説明します。
  • ExcelのSheetの情報を使用して別のSheetを表示するためには、マクロを使用すると便利です。また、Sheet名の情報を採集する方法についても解説します。

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.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 うまくいかなかったらごめんネ^ ^;

taktta
質問者

お礼

うまくいきすぎました。目的達成150% すばらしいですね。 どうもありがとうございました。

その他の回答 (1)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。表ができている状態であれば、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"",""" & シート名 & """)" な感じで。 また、配列を使うスキルがおありなら、さらに処理時間は短縮できると思います。

taktta
質問者

お礼

回答2でのフォローごていねいに、ありがとうございます。 少し間違いがあったほうがこちらも調査し勉強になります。

関連するQ&A