Открой ArcMap, загрузи первым слоем точки, вторым линии.
Кликни Tools > Macros > создай новый макрос и поставь вызов этой процедуры (я её модифицировал):
Sub SplitAll()
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMap As IMap
Set pMap = pMxDoc.FocusMap
Dim pPointL As IFeatureLayer
Set pPointL = pMap.Layer(0) 'point layer to split lines with
Dim pLineL As IFeatureLayer
Set pLineL = pMap.Layer(1) 'line layer to be split
Dim pLineFC As IFeatureClass
Set pLineFC = pLineL.FeatureClass
Dim pPointFC As IFeatureClass
Set pPointFC = pPointL.FeatureClass
Dim pPointCursor As IFeatureCursor
Set pPointCursor = pPointFC.Search(Nothing, False)
Dim pPointF As IFeature
Set pPointF = pPointCursor.NextFeature
Dim pRelOp As IRelationalOperator
Do Until pPointF Is Nothing
Dim pPoint As IPoint
Set pPoint = pPointF.Shape
Set pRelOp = pPoint
Dim pSF As ISpatialFilter
Set pSF = New SpatialFilter
With pSF
Set .Geometry = pPoint
.GeometryField = "Shape"
.SpatialRel = esriSpatialRelIntersects
End With
Dim pLineCursor As IFeatureCursor
Set pLineCursor = pLineFC.Search(pSF, False)
Dim pLineF As IFeature
Set pLineF = pLineCursor.NextFeature
Do Until pLineF Is Nothing
Dim pPolyCurve As IPolycurve
Set pPolyCurve = pLineF.Shape
If pPolyCurve.Length > 0 Then
Dim pToPoint As IPoint
Set pToPoint = pPolyCurve.ToPoint
Dim pFromPoint As IPoint
Set pFromPoint = pPolyCurve.FromPoint
If pRelOp.Equals(pFromPoint) Or _
pRelOp.Equals(pToPoint) Then
'do nothing
Else
Dim pFeatureEdit As IFeatureEdit
Set pFeatureEdit = pLineF
pFeatureEdit.Split pPointF.Shape
End If
Set pLineF = pLineCursor.NextFeature
End If
Loop
Set pPointF = pPointCursor.NextFeature
Loop
End Sub