マクロ入りシートを別ワークブックにコピー

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

別ブックにマクロ入りのシートを複製すると、シートに記録されたマクロも複製されます。

しかし、ボタンにマクロを登録している場合、元のブックを参照してしまいますのでマクロを登録する必要があるためこの処理を行います。