Microsoft 製品に組み込まれている Visual Basic の実装。
思いつきレベルの話で恐縮ですが、もし、シートのコピーを手動でやられているのでしたら、次にマクロを起動する場合には、ボタンのあるシートをActiveにする必要があると思います。
その場合はWorkBookのイベントプロシージャとして、
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "<ボタンのあるシート名>" Then
Sh.Shapes("正方形長方形 1").OnAction = "<コピー元ブック名>!<マクロ名>"
End If
End Sub
としてしまえば実用上は困らないのでは?
なお、 "<コピー元ブック名>!<マクロ名>" は "<マクロ名>"で良いはずです。
私はSP2を入れていないので実地には試してません。