TheSwamp
Code Red => VB(A) => Topic started by: ML on February 22, 2008, 06:30:19 PM
-
Hi
Has anyone had any luck editing custom properties in a Sheet Set?
There are CUSTOM_SHEET_PROP and CUSTOM_SHEETSET_PROP
The CUSTOM_SHEET_PROP would be a field specific to each a sheet (layout)
and CUSTOM_SHEETSET_PROP would be fields for all sheets
A good example would in a case where you have 1 of # (for example) in your total number of drawings
Well, you might define The 1 as a CUSTOM_SHEET_PROP (field) and the # as a CUSTOM_SHEETSET_PROP (field) as the first number changes per sheet (layout) and the second number changes per sheets (layouts).
So each time a user updates, the # (field), the layouts will re index dynamically.
Once you start getting the hang of it; it is really cool.
Anyhow, we write our project data out to a txt file and with attributes, we can read that info in; now I need to be able to do this with fields (CUSTOM_PROPS)
I have made some progress and would be glad to share what I have but I just can't get to that last huddle.
Any help would be appreciated.
Thanks!
Mark
PS: I have checked high and low on the net; vba examples etc.
-
Please send me a Private Message and I will post my whole set of code for doing all of this on Monday from work. I used info I found on a blog (I will post that link too) to write up a whole interface for our company. We export the info into Excel so that non-CAD people can edit it and there is an import routine as well.
It was made primarily for importing sheet sets from different offices.
Murph
-
Hi Murph
Check your PM
Thank you!
Mark
-
Mark,
The attached file is stuff I put together from this site:
http://jtbworld.blogspot.com/2005/01/sheet-set-manager-api-code-sample-for_20.html (http://jtbworld.blogspot.com/2005/01/sheet-set-manager-api-code-sample-for_20.html)
Look it over and ask questions. Hope it helps.
http://www.theswamp.org/lilly_pond/index.php?dir=murphy/&file=CustomSSM.dvb (http://www.theswamp.org/lilly_pond/index.php?dir=murphy/&file=CustomSSM.dvb)
Murph
-
Thanks Murph!
I appreciate that!
I will take a look shortly.
Mark
-
Pay close attention to the code in the form. That is where most of the work is done.
Check out the Utils functions for how the nitty gritty stuff is accomplished.
-
OK Murph!
You code looks great
Certainly a lot to be desired in there.
I just want to be able to edit the custom props first, then I will certainly look even closer at all the code you sent.
OK, I will check out The Utils functions now
Thanks!
Mark
-
I'm jumping a bit ahead but I just noticed that you are using Scripting language
That is cool; I use it a lot too
I noticed that is some examples you were grabbing the username and machine.
It did not work here but I wasn't sue how you were grabbing that info.
I have always used scripting code to retrieve that info.
Mark
-
Hey Murph
Again, your code is very nice and there is a lot to get from it.
However, it is still a bit complex with all of the Excel stuff going on etc.
I am looking for a very basic example of changing custom props in The Sheet and Sheets.
After I get that, I can then expound on it.
Do you happen to have anything a little more basic?
Thanks!
Mark
-
Mark,
Let's walk through it step-by-step so you can get what you want out of this.
We start in SheetSetForm.SSStartHere.
This is checking to see if you have a sheet set open and make sure only one is open.
It will lock it then send it on to LoopThroughSheetsPop
Here is where we get the values to present to the user for changing.
Notice that GetCSSProperties is sending a string and a sheet. The string is the EXACT Title of the Custom Sheet Property.
You can customize the whole form according to your company's custom sheet properties.
Let's assume some values were changed and the user hits the OK button. That code send us to SetProps.
This routine checks for one and only one sheet set and locks it.
Because this stuff is exporting sheet set stuff to Excel for import at another office we will skip that for now.
SetProps sends us to LoopThroughSheetsSet which will do just that.
It will loop through all of the sheets and set the values to what they are in the form. If the user didn't change them they still get 'updated' but nothing will change.
Private Sub LoopThroughSheetsSet(ByVal compEnum As IAcSmEnumComponent)
Dim comp As IAcSmComponent
Dim lastrevn As Variant
Dim lyOut As AcSmAcDbLayoutReference
Dim lyName As String
Dim lastrevd As String
Dim lastrevdate As String
Dim rNumTemp As String
Dim rnNext As String
Dim rnVar As Variant
Dim dirmade As Boolean
Dim tLine1 As String
Dim tLine2 As String
Dim tLine3 As String
Dim selsets As AcSmSheetSelSets
Dim selset As AcSmSheetSelSet
Dim tselset As AcSmSheetSelSet
Dim ssMade As Boolean
Dim ttitle As String
Dim repTemp As String
On Error GoTo ErrHandler
ssMade = False
Set comp = compEnum.Next()
dirmade = False
' loop through till the component is Nothing
Do While Not comp Is Nothing
'if the component is a sheet, then...
If comp.GetTypeName = "AcSmSheet" Then
'loop through all the sheets.
'Call LoopThroughSheetsPop(sset.GetSheetEnumerator)
Dim s As AcSmSheet
Set s = comp
Dim sNumber As String
Dim sTitle As String
sNumber = s.GetNumber
'tLine1 = GetCSSProperties("Drawing Title Line 1", s)
'tLine2 = GetCSSProperties("Drawing Title Line 2", s)
'tLine3 = GetCSSProperties("Drawing Title Line 3", s)
'If tLine1 = "%%032" Then
' tLine1 = ""
'End If
'If tLine2 = "%%032" Then
' tLine2 = ""
'End If
'If tLine3 = "%%032" Then
' tLine3 = ""
'End If
'If Not tLine1 = "" Then
' If Not tLine2 = "" Then
' If Not tLine3 = "" Then
' ttitle = tLine1 & " " & tLine2 & " " & tLine3
' Else
' ttitle = tLine1 & " " & tLine2
' End If
' Else
' If Not tLine3 = "" Then
' ttitle = tLine1 & " " & tLine3
' Else
' ttitle = tLine1
' End If
' End If
'Else
' If Not tLine2 = "" Then
' If Not tLine3 = "" Then
' ttitle = tLine2 & " " & tLine3
' Else
' ttitle = tLine2
' End If
' Else
' If Not tLine3 = "" Then
' ttitle = tLine3
' End If
' End If
'End If
'
'If Not ttitle = "" Then
' s.SetTitle ttitle
'End If
sTitle = s.GetTitle
Set lyOut = s.GetLayout
lyName = lyOut.ResolveFileName
If sNumber = dNum Then
If Not pstamp = "" Then
ChangeProperties "Preliminary Stamp", pstamp, s
End If
If Not pLines = "" Then
ChangeProperties "ProjectLayer", pLines, s
End If
If Not tLines = "" Then
ChangeProperties "TitleLayer", tLines, s
End If
If Not ssetName = "" Then
newSelSet.Add s
End If
If Not chk = "" Then
ChangeProperties "Checked By", chk, s
End If
If Not des = "" Then
ChangeProperties "Designed By", des, s
End If
If Not chrg = "" Then
ChangeProperties "In Charge Of", chrg, s
End If
If Not dwn = "" Then
ChangeProperties "Drawn By", dwn, s
End If
If Not scl = "" Then
ChangeProperties "Scale", scl, s
End If
If Not ptitle = "" Then
ChangeProperties "Location", ptitle, s
'ChangeProperties "Drawing Title Line 1", ptitle, s
End If
If Not repTxt = "" Then
repTemp = PropReplaceCombo.Column(0, PropReplaceCombo.ListIndex)
ChangeProperties repTemp, repTxt, s
End If
If Not rdesc = "" Then
If wipeClean = True Then
ChangeProperties "Revision Number 0", "0", s
ChangeProperties "Description of revision 0", rdesc, s
ChangeProperties "Date of Revision 0", rdate, s
ChangeProperties "Initials of Rev 0 Reviewer", rinit, s
ChangeProperties "Revision Number 1", "%%032", s
ChangeProperties "Description of Revision 1", "%%032", s
ChangeProperties "Date of Revision 1", "%%032", s
ChangeProperties "Initials of Rev 1 Reviewer", "%%032", s
ChangeProperties "Revision Number 2", "%%032", s
ChangeProperties "Description of Revision 2", "%%032", s
ChangeProperties "Date of Revision 2", "%%032", s
ChangeProperties "Initials of Rev 2 Reviewer", "%%032", s
ChangeProperties "Revision Number 3", "%%032", s
ChangeProperties "Description of Revision 3", "%%032", s
ChangeProperties "Date of Revision 3", "%%032", s
ChangeProperties "Initials of Rev 3 Reviewer", "%%032", s
ChangeProperties "Revision Number 4", "%%032", s
ChangeProperties "Description of Revision 4", "%%032", s
ChangeProperties "Date of Revision 4", "%%032", s
ChangeProperties "Initials of Rev 4 Reviewer", "%%032", s
Else
If GetCSSProperties("Date of Revision 4", s) = "%%032" Then
If GetCSSProperties("Date of Revision 3", s) = "%%032" Then
If GetCSSProperties("Date of Revision 2", s) = "%%032" Then
If GetCSSProperties("Date of Revision 1", s) = "%%032" Then
If GetCSSProperties("Date of Revision 0", s) = "%%032" Then
If rtype = "L" Then
ChangeProperties "Revision Number 0", "A", s
Else
ChangeProperties "Revision Number 0", "0", s
End If
ChangeProperties "Description of revision 0", rdesc, s
ChangeProperties "Date of Revision 0", rdate, s
ChangeProperties "Initials of Rev 0 Reviewer", rinit, s
Else
rNumTemp = GetCSSProperties("Revision Number 0", s)
If rtype = "L" Then
rnNext = AddLetter(rNumTemp)
Else
If IsNumeric(rNumTemp) Then
rnVar = rNumTemp
rnVar = rnVar + 1
rnNext = rnVar
Else
rnNext = "0"
End If
End If
ChangeProperties "Revision Number 1", rnNext, s
ChangeProperties "Description of Revision 1", rdesc, s
ChangeProperties "Date of Revision 1", rdate, s
ChangeProperties "Initials of Rev 1 Reviewer", rinit, s
End If
Else
rNumTemp = GetCSSProperties("Revision Number 1", s)
If rtype = "L" Then
rnNext = AddLetter(rNumTemp)
Else
If IsNumeric(rNumTemp) Then
rnVar = rNumTemp
rnVar = rnVar + 1
rnNext = rnVar
Else
rnNext = "0"
End If
End If
ChangeProperties "Revision Number 2", rnNext, s
ChangeProperties "Description of Revision 2", rdesc, s
ChangeProperties "Date of Revision 2", rdate, s
ChangeProperties "Initials of Rev 2 Reviewer", rinit, s
End If
Else
rNumTemp = GetCSSProperties("Revision Number 2", s)
If rtype = "L" Then
rnNext = AddLetter(rNumTemp)
Else
If IsNumeric(rNumTemp) Then
rnVar = rNumTemp
rnVar = rnVar + 1
rnNext = rnVar
Else
rnNext = "0"
End If
End If
ChangeProperties "Revision Number 3", rnNext, s
ChangeProperties "Description of Revision 3", rdesc, s
ChangeProperties "Date of Revision 3", rdate, s
ChangeProperties "Initials of Rev 3 Reviewer", rinit, s
End If
Else
rNumTemp = GetCSSProperties("Revision Number 3", s)
If rtype = "L" Then
rnNext = AddLetter(rNumTemp)
Else
If IsNumeric(rNumTemp) Then
rnVar = rNumTemp
rnVar = rnVar + 1
rnNext = rnVar
Else
rnNext = "0"
End If
End If
ChangeProperties "Revision Number 4", rnNext, s
ChangeProperties "Description of Revision 4", rdesc, s
ChangeProperties "Date of Revision 4", rdate, s
ChangeProperties "Initials of Rev 4 Reviewer", rinit, s
End If
Else
rNumTemp = GetCSSProperties("Revision Number 4", s)
If rtype = "L" Then
rnNext = AddLetter(rNumTemp)
Else
If IsNumeric(rNumTemp) Then
rnVar = rNumTemp
rnVar = rnVar + 1
rnNext = rnVar
Else
rnNext = "0"
End If
End If
ChangeProperties "Revision Number 0", GetCSSProperties("Revision Number 1", s), s
ChangeProperties "Description of revision 0", GetCSSProperties("Description of Revision 1", s), s
ChangeProperties "Date of Revision 0", GetCSSProperties("Date of Revision 1", s), s
ChangeProperties "Initials of Rev 0 Reviewer", GetCSSProperties("Initials of Rev 1 Reviewer", s), s
ChangeProperties "Revision Number 1", GetCSSProperties("Revision Number 2", s), s
ChangeProperties "Description of Revision 1", GetCSSProperties("Description of Revision 2", s), s
ChangeProperties "Date of Revision 1", GetCSSProperties("Date of Revision 2", s), s
ChangeProperties "Initials of Rev 1 Reviewer", GetCSSProperties("Initials of Rev 2 Reviewer", s), s
ChangeProperties "Revision Number 2", GetCSSProperties("Revision Number 3", s), s
ChangeProperties "Description of Revision 2", GetCSSProperties("Description of Revision 3", s), s
ChangeProperties "Date of Revision 2", GetCSSProperties("Date of Revision 3", s), s
ChangeProperties "Initials of Rev 2 Reviewer", GetCSSProperties("Initials of Rev 3 Reviewer", s), s
ChangeProperties "Revision Number 3", GetCSSProperties("Revision Number 4", s), s
ChangeProperties "Description of Revision 3", GetCSSProperties("Description of Revision 4", s), s
ChangeProperties "Date of Revision 3", GetCSSProperties("Date of Revision 4", s), s
ChangeProperties "Initials of Rev 3 Reviewer", GetCSSProperties("Initials of Rev 4 Reviewer", s), s
ChangeProperties "Revision Number 4", rnNext, s
ChangeProperties "Description of Revision 4", rdesc, s
ChangeProperties "Date of Revision 4", rdate, s
ChangeProperties "Initials of Rev 4 Reviewer", rinit, s
End If
ChangeRevProps rnNext, rdate, s
End If
End If
End If
ElseIf comp.GetTypeName = "AcSmSubset" Then
Dim sset As AcSmSubset
Set sset = comp
'loop through all the sheets.
Call LoopThroughSheetsSet(sset.GetSheetEnumerator)
End If
'next
Set comp = compEnum.Next()
Loop
GoTo Exit_Here
ErrHandler:
Select Case Err.Number
Case -2147467259
Err.Clear
Resume
Case Else
MsgBox Err.Number & ":" & Err.Description, vbOKOnly, "Error " & Err.Number
GoTo Exit_Here
End Select
Exit_Here:
End Sub
This is where the work is done.
Notice how it is calling ChangeProperties, sending the Property title as a string, the desired value, and the sheet.
If you go through and replace all "Revision Number 0" with the title of your Custom Sheet Property then run the SheetSetSheet.SSFormStart
you will see what it is doing.
Let me write a set of routines for you that will ask for the Custom Property you want to get the value for and ask you to change it via InputBoxes.
-
Mark,
Insert a new module and paste this code into it.
This will ask you for the Property title to change, give you the existing value and let you change it.
This is an example to show you how the rest of the stuff works.
Murph
Dim aCount As Integer
Dim cCount As Integer
Dim eCount As Integer
Dim iCount As Integer
Dim mCount As Integer
Dim pCount As Integer
Dim sCount As Integer
Dim pidCount As Integer
Dim dwgCount As Integer
Dim scl As String
Dim chk As String
Dim des As String
Dim chrg As String
Dim dwn As String
Dim rinit As String
Dim ssetName As String
Dim ptitle As String
Dim rdesc As String
Dim rdate As String
Dim rtype As String
Dim dNum As String
Dim draw As AcadDocument
Dim newDir As String
Dim newSelSet As IAcSmSheetSelSet
Dim pstamp As String
Dim pLines As String
Dim tLines As String
Dim donce As Boolean
Dim wipeClean As Boolean
Dim sdcCount As Integer
Dim sdcChange As Boolean
Dim NewSubsetStr As String
Dim sdcCalled As Boolean
Dim startDone As Boolean
Dim sdcPrev As Boolean
Dim repTxt As String
Dim expSel As Boolean
Dim xBook As Workbook
Dim dSht As Worksheet
Dim ppSht As Worksheet
Dim ssSht As Worksheet
Dim SingDrawComboPrev As Integer
Public Sub SetProps()
Dim i As Integer
i = SheetSetsOpen
If i > 1 Then
MsgBox "More than one Sheet Set are open. Make sure only one is open.", vbCritical
Exit Sub
ElseIf i = 0 Then
MsgBox "No Sheet Set is open. Make sure one is open.", vbCritical
Exit Sub
End If
Dim ssm As New AcSmSheetSetMgr
Dim dbIter As IAcSmEnumDatabase
Dim db As IAcSmDatabase
Dim ss As AcSmSheetSet
If ssm Is Nothing Then
MsgBox "Something wrong here: 1", vbCritical
Exit Sub
End If
Set dbIter = ssm.GetDatabaseEnumerator
If dbIter Is Nothing Then
MsgBox "Something wrong here: 2", vbCritical
Exit Sub
End If
dbIter.Reset
'get the Database of the first sheetset
Set db = dbIter.Next
If db Is Nothing Then
MsgBox "No Sheet Set open", vbCritical
Exit Sub
End If
'get the sheetset
Set ss = db.GetSheetSet
If ss Is Nothing Then
MsgBox "Cannot get the Sheet Set", vbCritical
Exit Sub
End If
Set oSheetIter = ss.GetSheetEnumerator
If oSheetIter Is Nothing Then
Return
End If
'lock the database
Dim lockStatus As AcSmLockStatus
Let lockStatus = db.GetLockStatus
If lockStatus = AcSmLockStatus_UnLocked Then
db.LockDb db
Else
Dim sUserName As String
Dim sMachineName As String
db.GetLockOwnerInfo sUserName, sMachineName
MsgBox "The Sheet Set is locked by " & sUserName & " at " & sMachineName, vbCritical
Exit Sub
End If
Dim compEnum As IAcSmEnumComponent
'get component enumerator
Set compEnum = ss.GetSheetEnumerator
Call LoopThroughSheetsSetMark(compEnum)
'unlock the database
Call db.UnlockDb(db, True)
End Sub
Private Sub LoopThroughSheetsSetMark(ByVal compEnum As IAcSmEnumComponent)
Dim comp As IAcSmComponent
Dim lastrevn As Variant
Dim lyOut As AcSmAcDbLayoutReference
Dim lyName As String
Dim lastrevd As String
Dim lastrevdate As String
Dim rNumTemp As String
Dim rnNext As String
Dim rnVar As Variant
Dim dirmade As Boolean
Dim tLine1 As String
Dim tLine2 As String
Dim tLine3 As String
Dim selsets As AcSmSheetSelSets
Dim selset As AcSmSheetSelSet
Dim tselset As AcSmSheetSelSet
Dim ssMade As Boolean
Dim ttitle As String
Dim repTemp As String
Dim cssProp As String
Dim exstVal As String
Dim newVal As String
On Error GoTo ErrHandler
ssMade = False
Set comp = compEnum.Next()
dirmade = False
cssProp = InputBox("What is the EXACT title of your custom property?", "Property Title")
' loop through till the component is Nothing
Do While Not comp Is Nothing
'if the component is a sheet, then...
If comp.GetTypeName = "AcSmSheet" Then
Dim s As AcSmSheet
Set s = comp
Dim sNumber As String
Dim sTitle As String
exstVal = GetCSSProperties(cssProp, s)
sTitle = s.GetTitle
newVal = InputBox("The drawing " & sTitle & vbCr & "has a value of" & vbCr & exstVal & vbCr & _
"for the Custom Property titled" & vbCr & cssProp & vbCr & vbCr & "Please enter the new value here. Leave blank for no change" _
, "Properties to the Extreme")
If Not newVal = "" Then
ChangeProperties cssProp, newVal, s
End If
ElseIf comp.GetTypeName = "AcSmSubset" Then
Dim sset As AcSmSubset
Set sset = comp
'loop through all the sheets.
Call LoopThroughSheetsSet(sset.GetSheetEnumerator)
End If
'next
Set comp = compEnum.Next()
Loop
GoTo Exit_Here
ErrHandler:
Select Case Err.Number
Case -2147467259
Err.Clear
Resume
Case Else
MsgBox Err.Number & ":" & Err.Description, vbOKOnly, "Error " & Err.Number
GoTo Exit_Here
End Select
Exit_Here:
End Sub
-
Hey Murph
I really appreciate this; I have been making progress but it is very slow.
This stuff is not very intuitive.
OK, I copied the code into a new module; still I am getting some errors.
The first thing I did was commented out any references you have to Excel; for now.
The other thing is, this code
i = SheetSetsOpen
If i > 1 Then
MsgBox "More than one Sheet Set are open. Make sure only one is open.", vbCritical
Exit Sub
ElseIf i = 0 Then
MsgBox "No Sheet Set is open. Make sure one is open.", vbCritical
Exit Sub
End If
It tells me that no sheet set is open when in fact it is; so I commented that out.
I may be doing something wrong, but I have the sheet set manager open and a sheet set loaded
I am using the example one (civil) that came with CAD and I have one of the layouts open and active.
Also, I see now how sUserName, sMachineName are part of the database, GetLockOwnerInfo method.
With that, I keep getting the error that the sheet set is locked by me on my machine.
So, are we locking the Sheet Sets down prematurely?
Also, are we missing a function: ?
GetCSSProperties
Thanks again for breaking the code out for me; this is making it a lot more comprehensive.
I'm just not exactly sure why we are getting the errors we are.
Mark
-
Mark,
GetCSSProperties should be included in the dvb I linked to.
Can you stop the code where it sets i = SheetSetsOpen and check to see what value i has?
What version/flavor of Autocad are you running?
As to the sheet set being locked, if you have been using the same one to test on it may still be locked from the last time it errored out of the routines.
Look for and run SheetSetSheet.unlockdbnow, then run the stuff I gave you earlier.
Let me know what happens next.
Murph
-
Hey Murph
I will need to get that function then and paste it below the rest of the code, correct?
I stepped through the code and i is returning 0
I am using Land Desktop 2006
Also, I just created a seperate module simply to unlock the database.
Any suggestions?
Thanks!
Mark
-
OK Murph
I copied out 3 functions from your other project:
GetCSSProperties
ChangeProperties +
LoopThroughSheets (with the Mark at the end)
Now, it is working; I am now getting prompted with the input boxs, without any errors.
Now, I need to figure out what to put into each input box
Mark
-
I mean, I took Mark off the end to match the function call everywhere else
-
Murph
Finally! I got the result I was looking for
The only thing not working is when it checks for if a sheet set is open.
For now, that is commented out.
For whatever reason, I was thinking that the custom props needed to be changed globally in the properties dialog box.
Now, I see how this is working; we have to loop through each sheet in the sheet set, have the associated fields present in that particular layout in the sheet, then we edit our props and Regen.
Sound about right?
Very cool!
So, now it brings me back to where you probably are; that is what sheet do you (the user) want to edit?
Or, better yet, have the code recognize what sheet is open (current) prompt them with the custom props (as an attribute dialog box would) and allow them to edit accordingly.
I think (not sure) that we can use the attribute editor still with fields.
Am I more on base now?
Thank you Murph for all the help so far.
Now that I see what is going on, I may be able to understand your project better.
Mark
-
Mark,
From the sounds of it you have it right on the nose now.
You can have a Custom Sheet SET Property and a Custom Sheet Property.
The way this is doing it is a Custom Sheet Property.
If you look through the whole code that I sent you you will see that it is a custom dialog box that:
Lists all the drawings in a sheet set with all Properties editable.
Allows the creation of a new sheet within the sheet set.
Allows global and multiple selection editing of Custom Sheet Properties.
Exports/Imports sheet set information via Excel
Good luck and ask questions. I will try to check back more regularly.
Murph
-
Hey Murph
Yes, thank you so much!
This is how I started the post; with the knowledge that there are Custom Sheet and Sheet Set Props
Realistically, The sheet props only need to be edited in the respective sheets and globally for the sheets props.
So, now you have me on the right path, I may be able to run with it.
We have a VB form that captures the project info that the user enters and writes it out to a txt file.
I would like to be able to bring that same info (from the txt file) into the respective drawings and edit the respective props (Fields)
Do you think your project would allow me to get that result?
Thanks again!
Mark
-
Mark,
You should be able to do that with the txt file, no problem.
Just look at all of the stuff that for Excel and you will see where it is importing the info.
Murph
-
Yes,
I absolutely was looking at it Murph.
I used your export feature (very nice) however, it froze ACAD up.
There are a number of things that could have caused that.
Once I get the basic principle of what I am trying to do, then I will certainly get into the importing part.
We have the attributes being filled in with the text file that is generated by the user filling out the form.
Now, we want to go to fields (cust props) and I will need to do the same.
So, I just need to make sure that I understand how to edit the props programmatically before I proceed to that step.
Thanks!
Mark
-
I noticed you said
no problem :)
Shewwww, this is the probably the longest I have ever got hung up on a VBA project.
In my opinion, the syntax is very different then most VBA code and there is not a lot of good info out there for sheet sets that I have seen.
Thanks!
Mark
-
With a lot of help from Murph,
I now have some good-working code finally.
If anyone is interested, let me know and I will get it to you
Mark