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've added an attachment to this comment with the stacktraces. I tried the code you provided ... ``` var modifiers = NetOffice.Invoker.CreateParamModifiers(false, true); object[] formulaArray = null; object[] paramsArray = new object[] { SID_SRCStream, formulaArray }; NetOffice.Invoker.Method(page, "GetFormulas", paramsArray, modifiers); formulaArray = (object[])paramsArray[1]; object[] a = new object[0]; page.GetFormulasU(SID_SRCStream, out a); ``` but it won't compile to to the Invoker.Method line... ``` Severity Code Description Project File Line Suppression State Error CS0120 An object reference is required for the non-static field, method, or property 'Invoker.Method(COMObject, string, object[], ParameterModifier[])' ConsoleApplication1 d:\test_visio\ConsoleApplication1\ConsoleApplication1\Program.cs 77 Active ```
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've added an attachment to this comment with the stacktraces. I tried the code you provided ... ``` var modifiers = NetOffice.Invoker.CreateParamModifiers(false, true); object[] formulaArray = null; object[] paramsArray = new object[] { SID_SRCStream, formulaArray }; NetOffice.Invoker.Method(page, "GetFormulas", paramsArray, modifiers); formulaArray = (object[])paramsArray[1]; object[] a = new object[0]; page.GetFormulasU(SID_SRCStream, out a); ``` but it won't compile to to the Invoker.Method line... ``` Severity Code Description Project File Line Suppression State Error CS0120 An object reference is required for the non-static field, method, or property 'Invoker.Method(COMObject, string, object[], ParameterModifier[])' ConsoleApplication1 d:\test_visio\ConsoleApplication1\ConsoleApplication1\Program.cs 77 Active ```