『同じフォルダ内の特定のシート(指定をオブジェクト名)をまとめる』(neko)
同じフォルダ内の複数あるExcelファイル(xlsm)の特定のシートをマクロが記載されているファイルにまとめたい。
コピーされたシート名はファイル名と同じにする。
また、シートの指定はオブジェクト名にしたい。
以上の要件で、コードを書きたいのですが、tempSheetName = wbSource.VBProject.VBComponents("Worksheet").Properties("sh_01kaisou")
と書いても Nothing になってしまいます。
シートオブジェクト名が"sh_01kaisou"とあるシートだけを1つのファイルにまとめたいです。
分かる方がいましたら、教えてください<m(__)m>
Dim folderPath As String
Dim fileName As String
Dim wbSource As Workbook
Dim wsSource As Worksheet
Dim newSheet As Worksheet
Dim tempSheetName As String
' マクロファイルと同じフォルダを使用
folderPath = ThisWorkbook.Path & "\"
' 対象ファイルをループ(.xlsx形式)
fileName = Dir(folderPath & "*.xlsm")
Do While fileName <> ""
' マクロファイル自身はスキップ
If fileName <> ThisWorkbook.Name Then
Set wbSource = Workbooks.Open(folderPath & fileName)
On Error Resume Next
tempSheetName = wbSource.VBProject.VBComponents("Worksheet").Properties("sh_01kaisou")
Set wsSource = wbSource.tempSheetName
On Error GoTo 0
If Not wsSource Is Nothing Then
' マクロファイル末尾にコピー
wsSource.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set newSheet = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
newSheet.Name = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name
End If
wbSource.Close SaveChanges:=False
End If
fileName = Dir
Loop
MsgBox "シートの統合が完了しました!", vbInformation
End Su
< 使用 Excel:Excel2019、使用 OS:Windows11 >
単純に開いたブックのシートをループしてCodeNameで判断した方が確実だと思いますが? (jindon) 2025/07/16(水) 18:30:57
私もjindonさんの考えに賛成ですが、もし今の方針を継続するなら、 tempSheetName = wbSource.VBProject.VBComponents("sh_01kaisou").Properties("Name") Set wsSource = wbSource.Worksheets(tempSheetName) ということになるのかもしれません。 (xyz) 2025/07/16(水) 19:30:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.