Macro help to display part of filename
-
- Posts: 19
- 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: 19
- 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: 19
- 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: 19
- 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: 19
- 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
Re: Macro help to display part of filename
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-ap ... ment-save/
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-ap ... ment-save/
Deepak Gupta
SOLIDWORKS Consultant/Blogger
SOLIDWORKS Consultant/Blogger
-
- Posts: 19
- Joined: Wed Feb 01, 2023 5:10 pm
- x 1
Re: Macro help to display part of filename
Deepak,gupta9665 wrote: ↑Wed Nov 27, 2024 10:26 am 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-ap ... ment-save/
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.
Re: Macro help to display part of filename
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.chancegarrison wrote: ↑Mon Dec 09, 2024 3:37 pm 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.
Deepak Gupta
SOLIDWORKS Consultant/Blogger
SOLIDWORKS Consultant/Blogger