EBDN - Community - Question & Answers

  Tuesday, 06 March 2018
  2 Replies
  10.8K Visits
0
Votes
Undo
Just upgraded from 661 to 680.

We have a VBA script (Macro) that creates a function by "right klick" on a device. Looks like follow. It worked everyday with 661, now it dosnt... Im a poor programmer :( so its hard to figure out why it doesn't work... Can anyone help me?

I get error "Run-time error 13": Type mismatch.
And the error occurs at the line:

"'Create association
Set oNewAcc = Application.Selection(iAct).TargetAssociations.New(aucRoleDeviceToFunction, oNewFunc)"



The Script totti:

Sub run()

Dim oNewFunc As ObjectItem
Dim SText As String
Dim oNewAcc As ObjectItem
Dim iAct As Integer
Dim iLast As Integer
Dim oAttr As String
Dim SFloc() As String
Dim oType As String


iLast = Application.Selection.Count

For iAct = 1 To iLast

'oAttr = Device designation

oAttr = Application.Selection(iAct).Attributes.ItemByID(5).Value
oType = Application.Selection(iAct).Attributes.ItemByID(7).Value



'Splitta device designation vid "_"
SFloc() = Split(oAttr, "_";)

'Skapa ny funktion "Actuator"
If oType = "149" And SFloc(0) = "XV" Then
Set oNewFunc = Application.ActiveProject.Project.FunctionsFolder.Children.AddNew(aucObjFunction, aucFctActuatorTag)
Else
If oType = "149" And SFloc(0) = "HV" Then
Set oNewFunc = Application.ActiveProject.Project.FunctionsFolder.Children.AddNew(aucObjFunction, "222";)


Else
If oType = "132" Then
Set oNewFunc = Application.ActiveProject.Project.FunctionsFolder.Children.AddNew(aucObjFunction, aucFctMeasurementTag)
Else
If oType = "146" Or oType = "120" Then
Set oNewFunc = Application.ActiveProject.Project.FunctionsFolder.Children.AddNew(aucObjFunction, aucFctLoadTag)

Else
If oType = "1727" Or oType = "1728" Then
Set oNewFunc = Application.ActiveProject.Project.FunctionsFolder.Children.AddNew(aucObjFunction, "222";)

Else
Set oNewFunc = Application.ActiveProject.Project.FunctionsFolder.Children.AddNew(aucObjFunction, aucFctUnspecified)

End If
End If
End If
End If
End If

'Create association
Set oNewAcc = Application.Selection(iAct).TargetAssociations.New(aucRoleDeviceToFunction, oNewFunc)


oNewFunc.Attributes.ItemByID(10342).Value = SFloc(0)
oNewFunc.Attributes.ItemByID(5).Value = "_" & SFloc(2)




oNewFunc.Store


Next

End Sub