none
引数の省略の仕方 RRS feed

  • 質問

  • .netからエクセルを開き、開いたエクセルのマクロを実行するということを

    行っているのですが。

    エクセルを開くapp.Workbooks.Open

    エクセルマクロの実行app.Run

    の所で引数を省略することはできるのでしょうか?

    今は引数を省略するとエラーになってしまうのでType.Missingを入れています。

    しかし、HELPなどを見ると引数を省略した書き方で書いてあったので省略できるのかなと思うのですが。

    private void button1_Click(object sender, System.EventArgs e)
      {
      
       Excel.Application app = null;
       Excel.Workbook wb = null;

       label1.Visible = true;
       Refresh();   

       try
       {      
        app = new Excel.Application();
      
        //エクセルファイル起動
        wb = app.Workbooks.Open(@"E:\\\aaa.xls",
         Type.Missing, Type.Missing, Type.Missing, Type.Missing,
         Type.Missing, Type.Missing, Type.Missing, Type.Missing,
         Type.Missing, Type.Missing, Type.Missing, Type.Missing,
         Type.Missing, Type.Missing);

        //エクセルマクロの実行
        app.Run("SelectFile",Type.Missing,Type.Missing,Type.Missing,Type.Missing,

    Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,

    Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,

    Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,

    Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,

    Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,

    Type.Missing);
     
        //app.Visible=true;
        
        wb.Save();

        MessageBox.Show("エクセルが作成されました。");
        
       }
       catch
       {   
        MessageBox.Show("ファイルの起動に失敗しました", "実行エラー");  
       }
       finally
       {
        //プロセス開放処理
        System.GC.Collect();
        app.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
        if(wb != null)
        {
         System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
        } 
        label1.Visible = false;
       }   

      }

    2006年8月28日 2:15

すべての返信