2012-01-03 11 views
0

アドイン式を含むセルから計算された値を取得しようとしています。 サンプルアドイン "myUtilityl.xla"がExcelで正常に動作しています。アドイン関数=ISOWEEKNUM(F9)の値を取得します。しかし、C#& Microsoft Object Libraryを使用してプログラムで値を取得することはできません。アドイン "myUtilityl.xla"はExcelに添付されています。環境はVS2010AddIn式とMicrosoft Object Libraryを使用してExcelから計算された値を読み取ります。

ここではサンプルコードを提供しています。

 string path = @"C:\Test.xls"; 
     Workbook theWorkbook; 
     Worksheet theWorksheet; 
     Range readRange; 
     Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();    
     theWorkbook = app.Workbooks.Open(path); 
     Sheets theSheets = (Sheets)theWorkbook.Worksheets; 
     theWorksheet = (Worksheet)theWorkbook.Worksheets.get_Item("Sheet1");    
     readRange = theWorksheet.get_Range("B1");    
     MessageBox.Show(Convert.ToString(readRange.Value)); 
     //theWorkbook.Save(); 
     app.Workbooks.Close(); 

Microsoft Object Libraryの新機能です。どんな助けや手がかりも非常に役立ちます。

+0

メッセージボックスには何が入っていますか? –

+0

ジャンク値を取得する--------------------------- ---------------- ----------- -2146826259 --------------------------- OK ----- ---------------------- –

+0

は、myUtility.xlaでB1がUDFを呼び出していますか? –

答えて

1

まあBrijeshでその作業を以下のように追加することができます。行方不明の唯一のことは、xlaを開く必要があるということでした。 app.Workbooks.Open(xlaFilePath); それから作業が始まりました。 ありがとうございました。私はとにかく、ここでのSheet2とVBA UDF計算値の細胞内への二つの値が取得され、コード入力の上

 string path = @"C:\Test2.xls"; 
     string xlaPath = @"C:\Test2.xla"; 
     Workbook theWorkbook; 
     Worksheet theWorksheet, theWorksheet2; 
     Range readRange; 
     Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); 
     app.Workbooks.Open(xlaPath); 
     theWorkbook = app.Workbooks.Open(path); 
     theWorksheet2 = (Worksheet)theWorkbook.Worksheets.get_Item("Sheet2"); 
     theWorksheet2.get_Range("A3").Value = 7; 
     theWorksheet2.get_Range("A4").Value = 7; 
     theWorkbook.RefreshAll(); 

     theWorksheet = (Worksheet)theWorkbook.Worksheets.get_Item("Sheet1");   
     readRange = theWorksheet.get_Range("A1"); 
     Console.WriteLine(Convert.ToString(readRange.Value)); 
     Console.ReadLine();   //theWorkbook.Save();    
     theWorkbook.Close(); 
     app.Workbooks.Close(); 

をコードを掲示しています。

0

今、あなたのコードサンプル

 var addins = Application.AddIns.Add(xlaFilePath); 

     if (!addins.Installed) 
     { 
      addins.Installed = true;     
     } 
+0

次のコードを使用してインストールされたアドインをチェックしようとすると、アドインが表示されます.. foreach(app.AddInsのAddInアドイン) { MessageBox.Show(addin.FullName) ; } –

+0

インストールされたプロパティについてはどうですか?それは本当ですか? –

+0

インストールされているプロパティが「True」を示しています。まあ私の実際のシナリオはこうです。私はいくつかのUDFを計算するExcelを持っています。私は特定のシートの1つのセルに入力し、UDF関数を呼び出す別のシートのセルから出力を読み込みます。上記の場合、セルB1は関数( "= ISONUMWEEK(F9)")を呼び出します。セルB1は、Excelでは値を表示しますが、コードには表示されません。 –

関連する問題