This works:
Sub AddingButtons()
Dim btn As Button
Dim t As Range
Dim Obj As Object
Dim Code As String
Dim ShtNm As String
With ThisWorkbook
.Worksheets.Add(After:=Worksheets(1)).Name = "My New Worksheet"
.Sheets("My New Worksheet").Activate
End With
ShtNm = ActiveSheet.Name
Sheets(ShtNm).Select
Set t = ActiveSheet.Range("D3:F4")
'create button
Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=t.Left, Top:=t.Top, Width:=t.Width, Height:=t.Height)
'button text
ActiveSheet.OLEObjects(1).Object.Caption = "Show Data Selection Window"
'macro text
Code = "Private Sub CommandButton1_Click()" & vbCrLf
Code = Code & "Call MyTestSub(ShtNm)" & vbCrLf
Code = Code & "End Sub"
MsgBox "Worksheet name is " & ActiveSheet.Name
'add macro at the end of the sheet module
With ActiveWorkbook.VBProject.VBComponents(Worksheets(ShtNm).CodeName).CodeModule
.insertlines .CountOfLines + 1, Code
End With
End Sub
PS - Tim - had the answer in his comment on my original question. Thx tim. How to create a dynamic button in excel