Dim macroName As String Workbooks.Add ThisWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Worksheets(1) For i = 1 To ActiveSheet.DrawingObjects.Count ActiveSheet.DrawingObjects(i).Select macroName = Selection.OnAction If InStr(macroName, "!") > 0 Then macroName = "'" & ActiveWorkbook.Name & "'!" & Mid(macroName, InStr(macroName, "!") + 1, Len(macroName)) ActiveSheet.DrawingObjects(i).OnAction = macroName End If Next i
別ブックにマクロ入りのシートを複製すると、シートに記録されたマクロも複製されます。
しかし、ボタンにマクロを登録している場合、元のブックを参照してしまいますのでマクロを登録する必要があるためこの処理を行います。