OK. Here is an iLogic rule you can try running while one of the old drawings is active for that task. It will try to find a specific PartsListStyle by its name (either in the style library, or in the document itself). You will need to change the style name being specified within the code before running it. If it is not found, it will let you know (one way or another), then exit the rule. Then it checks if that style is only in the library, in both the library and the document, or only in the document, and reacts differently for each scenario (does nothing if only found in document - not expected). If found in the library only, it creates a copy of it in the document, and captures that local copy. If in both, it makes sure the local version is up to date with the one in the library. Then it loops through every sheet, and every PartsList in the drawing, forcing them to use that style. Not 100% sure if that last step may be necessary, but it's there if needed. Then it updates the drawing if it is needed. Then saves the drawing, if needed.
Sub Main
If ThisDoc.Document.DocumentType <> DocumentTypeEnum.kDrawingDocumentObject Then
MsgBox("A Drawing document must be active for this code to work. Exiting.", vbCritical, "")
Return 'exit rule if it is not a drawing, to prevent errors later
End If
Dim oDDoc As DrawingDocument = ThisDoc.Document
Dim oStylesMgr As DrawingStylesManager = oDDoc.StylesManager
Dim oPLStyles As PartsListStylesEnumerator = oStylesMgr.PartsListStyles
Dim oPLStyle As PartsListStyle = Nothing
Dim sPLStyleName As String = "PartsListStyleName" '<<< CHANGE THIS >>>
Try
oPLStyle = oPLStyles.Item(sPLStyleName)
Catch 'what to do if that fails
MessageBox.Show("Cound not find PartsListStyle named: ", "PartsListStyle Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error)
'Logger.Error("Could not find PartsListStyle named: " & sPLStyleName)
Return
End Try
If oPLStyle Is Nothing Then Return 'if not found, exit routine or rule
If oPLStyle.StyleLocation = StyleLocationEnum.kLibraryStyleLocation Then
Try
oPLStyle = oPLStyle.ConvertToLocal
Catch 'what to do if that fails
MessageBox.Show("Error converting library style to local style!", "Error Converting To Local", MessageBoxButtons.OK, MessageBoxIcon.Error)
'Logger.Error("Error converting library style to local style!")
End Try
ElseIf oPLStyle.StyleLocation = StyleLocationEnum.kBothStyleLocation Then
'compare this style against library version with same name, if different will return False
If oPLStyle.UpToDate = False Then 'they were different somehow
oPLStyle.UpdateFromGlobal 'update this style to match the library style with same name
End If
ElseIf oPLStyle.StyleLocation = StyleLocationEnum.kLocalStyleLocation Then
'what to do when the style is only found in local document, not in library (may never happen)
End If
'loop through all PartsLists in drawing to make sure they are updated
Dim oSheets As Inventor.Sheets = oDDoc.Sheets
For Each oSheet As Inventor.Sheet In oSheets
Dim oPLists As PartsLists = oSheet.PartsLists
If oPLists.Count = 0 Then Continue For 'if no PartsLists, skip to next sheet
For Each oPList As PartsList In oPLists
Try
oPList.Style = oPLStyle
Catch 'what to do if that fails
Logger.Error("Error setting PartsList.Style to updated PartsListStyle!")
End Try
Next 'oPList
Next 'oSheet
If oDDoc.RequiresUpdate Then oDDoc.Update2(True)
If oDDoc.Dirty Then oDDoc.Save2()
End Sub
A similar process can be used for most other types of styles. In fact a lot of folks loop through all styles (of every type), and attempt to make sure they are updated to match the library. I hope this will work OK for you.
Wesley Crihfield

(Not an Autodesk Employee)