I am exploring using NetOffice.Visio for my project VisioAutomation: https://github.com/saveenr/VisioAutomation
Here's some code which works with Microsoft.Office.Interop.Visio
// using IVisio = Microsoft.Office.Interop.Visio;
var app = new IVisio.Application();
var doc = app.Documents.Add("");
var page = app.ActivePage;
var shape = page.DrawRectangle(0, 0, 2, 3);
shape.Text = "With Microsoft.Office.Interop.Visio";
var SID_SRCStream = new short[4];
SID_SRCStream[0] = (short)shape.ID16;
SID_SRCStream[1] = (short)IVisio.VisSectionIndices.visSectionObject;
SID_SRCStream[2] = (short)IVisio.VisRowIndices.visRowFill;
SID_SRCStream[3] = (short)IVisio.VisCellIndices.visFillForegnd;
System.Array a;
page.GetFormulasU(SID_SRCStream, out a);
But the same code throws an exception with NetOffice.Visio (for .NET 4.0)
// using IVisioNetOffice = NetOffice.VisioApi;
var app = new IVisioNetOffice.Application();
var doc = app.Documents.Add("");
var page = app.ActivePage;
var shape = page.DrawRectangle(0, 0, 2, 3);
shape.Text = "With NetOffice";
var SID_SRCStream = new short[4];
SID_SRCStream[0] = (short)shape.ID16;
SID_SRCStream[1] = (short)IVisioNetOffice.Enums.VisSectionIndices.visSectionObject;
SID_SRCStream[2] = (short)IVisioNetOffice.Enums.VisRowIndices.visRowFill;
SID_SRCStream[3] = (short)IVisioNetOffice.Enums.VisCellIndices.visFillForegnd;
object[] a;
page.GetFormulasU(SID_SRCStream, out a);
The exception occurs in GetFormulas the inner exception says "{"Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"}".
I suspect the problem is with the second parameter because setformulas seems to work with the same SID_SRCStream.
Any ideas what is wrong in my code?
Comments: Thanks, Sebastian. I tried the code you provided - no exception is thrown but it sets returned value for formulaArray is set to null (instead of an array with a single formula value) One thing that may be affecting it is that on the current machine I tried it on a machine with both Visio 2010 and Visio 2016 and when I ran the code Visio 2010 kept launching. Tomorrow I'll try on a machine that only has Visio 2016 installed.
Here's some code which works with Microsoft.Office.Interop.Visio
// using IVisio = Microsoft.Office.Interop.Visio;
var app = new IVisio.Application();
var doc = app.Documents.Add("");
var page = app.ActivePage;
var shape = page.DrawRectangle(0, 0, 2, 3);
shape.Text = "With Microsoft.Office.Interop.Visio";
var SID_SRCStream = new short[4];
SID_SRCStream[0] = (short)shape.ID16;
SID_SRCStream[1] = (short)IVisio.VisSectionIndices.visSectionObject;
SID_SRCStream[2] = (short)IVisio.VisRowIndices.visRowFill;
SID_SRCStream[3] = (short)IVisio.VisCellIndices.visFillForegnd;
System.Array a;
page.GetFormulasU(SID_SRCStream, out a);
But the same code throws an exception with NetOffice.Visio (for .NET 4.0)
// using IVisioNetOffice = NetOffice.VisioApi;
var app = new IVisioNetOffice.Application();
var doc = app.Documents.Add("");
var page = app.ActivePage;
var shape = page.DrawRectangle(0, 0, 2, 3);
shape.Text = "With NetOffice";
var SID_SRCStream = new short[4];
SID_SRCStream[0] = (short)shape.ID16;
SID_SRCStream[1] = (short)IVisioNetOffice.Enums.VisSectionIndices.visSectionObject;
SID_SRCStream[2] = (short)IVisioNetOffice.Enums.VisRowIndices.visRowFill;
SID_SRCStream[3] = (short)IVisioNetOffice.Enums.VisCellIndices.visFillForegnd;
object[] a;
page.GetFormulasU(SID_SRCStream, out a);
The exception occurs in GetFormulas the inner exception says "{"Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"}".
I suspect the problem is with the second parameter because setformulas seems to work with the same SID_SRCStream.
Any ideas what is wrong in my code?
Comments: Thanks, Sebastian. I tried the code you provided - no exception is thrown but it sets returned value for formulaArray is set to null (instead of an array with a single formula value) One thing that may be affecting it is that on the current machine I tried it on a machine with both Visio 2010 and Visio 2016 and when I ran the code Visio 2010 kept launching. Tomorrow I'll try on a machine that only has Visio 2016 installed.