Macro help to display part of filename

I am looking for help to display part of a file name that is after a certain number of characters or a dash symbol.

For example, I have a part with file name 1-123456-001
I want to be able to display only the 001 from the end after the second dash on a drawing. How can this be trimmed and displayed?

This would save lots of tedious work.

Try this. The variable “s” is your initial string.

Dim substring As String
substring = Right(s, Len(s) - InStrRev(s, "-"))

Alex, this would be great but I’m no coder.

Here is another version, it can be simplified but I prefer it.

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim FileName As String

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc


FileName = swModel.GetPathName
FileName = Mid(FileName, InStrRev(FileName, "\") + 1)
FileName = Left(FileName, InStrRev(FileName, ".") - 1)
FileName = Mid(FileName, InStrRev(FileName, "-") + 1)

Debug.Print FileName


End Sub

Deepak,
How is this code intended to be used? I run this but nothing happens that I can see.

I should add that ideally I could run the macro and have it plug into a custom property value (ex PRP: “End of filename”) so I could run this across hundreds of drawings.

Deepak, based on this post and your help from the past I was able to cobble something together that works on Solidworks Parts, but I would like it to work on the drawing files as well.
Also, it would be a bonus for this macro to automatically run when saving the document.

Option Explicit

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim bRet As Boolean
Dim PropValue As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("Default")

If Not swModel Is Nothing And swModel.GetPathName <> "" Then
PropValue = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
PropValue = Left(PropValue, InStrRev(PropValue, ".") - 1)
PropValue = Mid(PropValue, InStrRev(PropValue, "-") + 1)
bRet = swCustPropMgr.Add3("DETAIL #", 30, PropValue, 1)
End If
swModel.Save
End Sub

Replace this line

Set swCustPropMgr = swModel.Extension.CustomPropertyManager(“Default”)

with

If swModel.GetType = 3 Then
Set swCustPropMgr = swModel.Extension.CustomPropertyManager(“”)
Else
Set swCustPropMgr = swModel.Extension.CustomPropertyManager(“Default”)
End If

And refer the macro example from artem here https://www.codestack.net/solidworks-api/application/documents/handle-document-save/

Deepak,
Rather than plugging this into another property within the drawing/part, would it be possible to create a property that is linked to the filename but always displays the number after the dash? This way it is always up-to-date regardless of if the filename has changed.

This can only be done via a macro or add-in, which will update the property value on file save. You can use design table as well, and derive the property via excel formulas.