I want to programmatically break all links between Variables and Excel. Inteactively, this is the process:
Tools - variables - variables (opens the Variable Table)
right click (any field of any variable) - Edit Links (opens the Links dialog)
hightlight the Excel source file - click Break Link - Click Yes
But I cannot figure how to do this programmatically.
I can get at the linked variables this way:
Set ObjDoc = seApp.Documents.Open(FileName)
Set Vars = ObjDoc.Variables 'variable object
Set VarList = Vars.Query("*") 'list of all variables
For Each xV In VarList
temp = UCase(xV.Formula)
If InStr(1, temp, ".XLS") Then bFoundXL = True: xV.Formula = "" 'Note: setting Formula="" does not break the link!
But this leave me stuck with the Excel file still referenced, even though it does not appear in any formulas.
So far I have tried:
1. Setting the formula to blank. Problem is the link remains in place, as seen in Tools-PropertyManager. If the referenced file is lost(broken), opening the file takes extra long.
2. ReduceFile method referenced in SErogramming with Solid Edge. Problem is the method does not seem to actually exist.
3. BreakLinks method. Cant figure out how to apply this to a variable linked to Excel.
Is there different way to go about this?
Platform: SE version 20, VB6
Posted by: Jon Zaerr
Post date: 5/13/2010 9:28:30 AM
Have you tried to set the formula="value in mm or deg"
You should read the value of the variable. Be careful because distance values are in meters and angle values are in radians.
Then try to convert the value into the correct units (mm, in, or whatever) and write that into the formula as a string.
I would say i did that in the past and worked but i can't find the example.
Posted by: Julian Guillo
Post date: 5/14/2010 5:13:11 AM
I've done it once by just editing the variables.
I had a variabletable with a lot of Excel Links. Via Variables.edit (name,value) I gave all the variables a new value, and the links where automatically broken. As you mention in your post you try to set the formula to "". Just edit the variable with the value it already has.
Posted by: Wouter Sloof
Post date: 5/16/2010 7:42:10 PM
Thanks for the advice. I tried this:
Set seApp = GetObject(, "SolidEdge.Application")
Set ObjDoc = seApp.activedocument
Set Vars = ObjDoc.Variables
... But it had the same effect as:
... namely, the excel file is still linked, even though no variables reference it.
Strangely, both methods DO work with some files, i.e. break the link.
As an interim fix, I plowed through 180 files in a semi-automated fasion breaking the links with mouse clicks. Ugly, but effective. Also wearing on the index finger.
Posted by: Jon Zaerr
Post date: 5/25/2010 2:43:13 PM