Macro help to display part of filename
-
- Posts: 16
- Joined: Wed Feb 01, 2023 5:10 pm
- x 1
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.
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.
Re: Macro help to display part of filename
Try this. The variable "s" is your initial string.
Code: Select all
Dim substring As String
substring = Right(s, Len(s) - InStrRev(s, "-"))
-
- Posts: 16
- Joined: Wed Feb 01, 2023 5:10 pm
- x 1
Re: Macro help to display part of filename
Alex, this would be great but I’m no coder.AlexB wrote: ↑Fri Nov 22, 2024 9:12 pm Try this. The variable "s" is your initial string.Code: Select all
Dim substring As String substring = Right(s, Len(s) - InStrRev(s, "-"))
Re: Macro help to display part of filename
Here is another version, it can be simplified but I prefer it.
Code: Select all
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 Gupta
SOLIDWORKS Consultant/Blogger
SOLIDWORKS Consultant/Blogger
-
- Posts: 16
- Joined: Wed Feb 01, 2023 5:10 pm
- x 1
Re: Macro help to display part of filename
gupta9665 wrote: ↑Sat Nov 23, 2024 8:47 am Here is another version, it can be simplified but I prefer it.
Code: Select all
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.
-
- Posts: 16
- Joined: Wed Feb 01, 2023 5:10 pm
- x 1
Re: Macro help to display part of filename
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.chancegarrison wrote: ↑Sun Nov 24, 2024 5:01 pm Deepak,
How is this code intended to be used? I run this but nothing happens that I can see.
-
- Posts: 16
- Joined: Wed Feb 01, 2023 5:10 pm
- x 1
Re: Macro help to display part of filename
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.gupta9665 wrote: ↑Sat Nov 23, 2024 8:47 am Here is another version, it can be simplified but I prefer it.
Code: Select all
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
Also, it would be a bonus for this macro to automatically run when saving the document.
Code: Select all
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