私は5つのメソッド(それぞれボタンをクリックすることに基づいている)を持つWindows Formsアプリケーションを持っています。それぞれの方法で、同じエクセルファイルを同じ方法で開きたいと思います。しかし、それぞれの方法では、ワークシート上の別の範囲を選択する必要があります。私は5回書き直すのではなく、Excelファイルを開くための関数を作成しようとしました...Excel変数を返すC#
// method to open Excel and load a the workbook based on date selected.
public Tuple<Microsoft.Office.Interop.Excel.Application, Workbook, Worksheet> openExcel()
{
Microsoft.Office.Interop.Excel.Application excelObj = new Microsoft.Office.Interop.Excel.Application();
string fileName = @"C:\Users\" + userName + @"\Documents\Visual Studio 2015\Projects\ProgramForMom\ProgramForMom\bin\Debug\Excel Files\" + frm2.year.Text + " Expenses";
Workbook wb = excelObj.Workbooks.Open(fileName, 0, false, 5, "", "", false, XlPlatform.xlWindows, "", true, false, 0, true, false, false);
wb.Activate(); // Activates file.
Worksheet ws = wb.Worksheets[frm2.month.Text];
ws.Activate();
return Tuple.Create(excelObj, wb, ws);
}
すべてはうまくいきます。
私はのいずれかの方法でこの機能を参照してみました...
var excelObj = openExcel();
Workbook wb = openExcel();
Worksheet ws = openExcel();
var cellValue = ws.Range["A1"].Value2;
と私は言ってエラーを取得...
「暗黙的にタイプを変換できません 『System.Tuple』へ'Microsoft.Office.Interop.Excel.Workbook'。明示的な変換が存在します(キャストがありません)。
ワークシートに同じエラーが表示されます。同じ正確なことは、単にワークブックという言葉をワークブックの代わりに置き換えるということです。
私が間違ったことを説明してもらえますか?ありがとうございました。
パーフェクト!どうもありがとうございます。正確に私が必要なもの! – Michael
ようこそ。タプルは短時間で1つの場所で情報を収集するための素晴らしいツールです –
はい、間違いありません。誰かが3つの関数を作成したい、またはグローバル変数を使用して私の問題に似たものを実現したいというこの記事を見ました。あなたのソリューションは良い方法です!非常に簡単で、きちんとした時間を節約します。 – Michael