2012-01-03 2 views
0

추가 기능 수식이있는 셀에서 계산 된 값을 검색하려고합니다. Excel에서 샘플 추가 기능 "myUtilityl.xla"가 제대로 작동하고 있습니다. addin 함수 =ISOWEEKNUM(F9)의 값을 검색합니다. 그러나 C# & Microsoft Object Library를 사용하여 프로그래밍 방식으로 값을 검색 할 수는 없습니다. 추가 기능 "myUtilityl.xla"는 Excel에 첨부됩니다. 환경은 VS2010입니다.AddIn 수식과 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); 그런 다음 작업을 시작했습니다. 대단히 감사합니다. 나는 시트 2와 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 addin) { MessageBox.Show (addin.FullName) ; } –

+0

설치된 속성은 어떻습니까? 그것은 사실입니까? –

+0

설치된 속성이 "참"으로 표시됩니다. 글쎄, 내 실제 시나리오는 이렇다. 몇 가지 UDF를 계산하는 Excel이 있습니다. 특정 시트의 한 셀에 입력하고 UDF 기능을 호출하는 다른 시트의 셀에서 출력을 읽습니다. 위의 경우 셀 B1 함수를 호출합니다 ("= ISONUMWEEK (F9)"). 셀 B1은 Excel에서 값을 표시하지만 코드에서는 표시하지 않습니다. –