Announcement

Collapse
No announcement yet.

Excel.Workbooks.Open gibt es keine optionalen Parameter mehr?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Excel.Workbooks.Open gibt es keine optionalen Parameter mehr?

    Hi,
    <br>
    <br>ein Test mit Excel Automation in c# ergab, das man bei dem folgenden Befehl alle Parameter eingeben mußte.
    <br>Excel.Workbooks.Open(...);
    <br>
    <br>Das mußte ich bisher weder in VB6 noch in Delphi.
    <br>Gibt es einen Trick auch unter C#.Net Optinale Parameter in COM Objecten zu verwenden?
    <br>Oder werden optinale Parameter in COM Objecten in .Net nicht unterstützt?
    <br>Woher weiß man welches die einzutragenden Standard Werte sind?
    <br>
    <br>Vielen Dank schon mal für die Antworten.
    <br>
    <br>mfg
    <br>PS

  • #2
    Hallo,

    nur in VB.NET steht der "alte bequeme" Weg noch zur Verfügung, da man in VB.NET auf Wunsch die strenge Typprüfung von .NET abschalten kann. In C# muss man die Methode <b>InvokeMember</b> selbst bemühen:

    <pre>

    Type aType;
    <b>object</b> aSrv;
    aType = Type.GetTypeFromProgID(<font color="#9933CC">&quot;Delphi6COM.Delphi6COMObj&quo t;</font>);
    aSrv = Activator.CreateInstance(aType);
    aType.InvokeMember(<font color="#9933CC">&quot;OSDoWork&quot;</font>, BindingFlags.InvokeMethod, <b>null</b>, aSrv, <b>null</b>);
    MessageBox.Show(<font color="#9933CC">&quot;Fertig&quot;</font>);

    </pre>

    In VB.NET würde die gleiche Aufgabe so aussehen:

    <pre>

    Dim aSrv As Delphi6COM.Delphi6COMObj
    aSrv = New Delphi6COM.Delphi6COMObj()
    Dim aObj As Object
    aObj = aSrv
    aObj.OSDoWork()

    </pre>

    C# unterstützt im Gegensatz zu VB.NET auch keine optionalen Parameter, daher ist der Rückgriff auf <b>Type.Missing</b> notwendig:
    <pre>

    <b>object</b> aOptEmptyParam = Type.Missing;
    iIE.Navigate(sURL, <b>ref</b> aOptEmptyParam, <b>ref</b> aOptEmptyParam, <b>ref</b> aOptEmptyParam, <b>ref</b> aOptEmptyParam);
    </font>

    </pre&gt

    Comment


    • #3
      @A.Kosch
      <br>
      <br>>object aOptEmptyParam = Type.Missing;
      <br>>iIE.Navigate(sURL, ref aOptEmptyParam, ref aOptEmptyParam, ref aOptEmptyParam, ref aOptEmptyParam);
      <br>
      <br>Vielen Dank, hat mir sehr weiter geholfen.
      <br>
      <br>mfg
      <br>P

      Comment

      Working...
      X