why doesn't my API program modify the sketch-driven pattern?

Hello, everyone. I wrote an Excel Macro to change the reference sketch used in sketch-driven pattern from one skech to another. But my program does not modify the feature. Does anybody know why? Thank you.

I have attached the solidworks document and the Excel macro.  The content of the Excel macro is as follows:

Option Explicit

Public Function update_model()

    Application.DisplayAlerts = False
   

    ' connect to solidworks. Solidworks part is already open.
    Dim swApp As SldWorks.SldWorks
    Set swApp = CreateObject("SldWorks.Application")
    swApp.Visible = True
    Dim swPart As SldWorks.PartDoc
    Set swPart = swApp.ActiveDoc
   
    ' modify sketch-driven pattern
    swPart.ClearSelection2 True
    Dim boolstatus As Boolean
    boolstatus = swPart.Extension.SelectByID2("new_sketch", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
    Dim swSelMgr As SldWorks.SelectionMgr
    Set swSelMgr = swPart.SelectionManager
    Dim swFeature As SldWorks.Feature
    Set swFeature = swSelMgr.GetSelectedObject6(1, -1)
    Dim swSketch As SldWorks.Sketch
    Set swSketch = swFeature.GetSpecificFeature2
    swPart.ClearSelection2 True
    boolstatus = swPart.Extension.SelectByID2("Sketch-Pattern", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
    Set swSelMgr = swPart.SelectionManager
    Set swFeature = swSelMgr.GetSelectedObject6(1, -1)
    Dim swSketchPatt As SldWorks.SketchPatternFeatureData
    Set swSketchPatt = swFeature.GetDefinition
    swSketchPatt.Sketch = swSketch
    boolstatus = swFeature.ModifyDefinition(swSketchPatt, swPart, Nothing)                  ' strange, it seems that this sentence is not effective.
   
   
    Set swApp = Nothing
  
   
End Function

SolidworksApi macros