2015-10-15 58 views
-4
  1. 我有一個Excel文件,其中一些單元格值是使用宏動態生成的。
  2. 文件也是隻讀的。
  3. 我必須閱讀這些動態生成的值使用C#代碼。 使用以下宏代碼生成單元格的值:

**Sub abc() Range("E5").Value = "string" Range("E6").Value = 2 End Sub**如何讀取使用c#中的宏動態生成的單元格值?

謝謝......!

+1

純代碼編寫請求是題外話堆棧溢出 - 我們期望在這裏 問題涉及到具體* *編程問題 - 但我們 會很樂意幫助你自己寫!告訴我們 [你試過的東西](http://whathaveyoutried.com),以及你卡在哪裏。 這也將幫助我們更好地回答你的問題。 –

回答

0

檢查是否需要連接到已打開的excel文件。 如果您使用excelApp.Workbooks.Open,它不會反映由宏更新的工作表數據。 相反,嘗試BindToMoniker將方法如下:

private void btnGetXLSValue_Click(object sender, EventArgs e) 
    { 

     object _row = 5; 
     object _column = 5; 
     Excel.Application excelApp = new Excel.Application(); 

     excelApp.Visible = false; 
     excelApp.ScreenUpdating = false; 
     excelApp.DisplayAlerts = false; 
     Microsoft.Office.Interop.Excel.Workbook excelWorkbook ;//= excelApp.Workbooks.Open(@"C:\July.xlsm", 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); 
     //Get a reference to the Workbook object by using a file moniker. 
     //The xls was saved earlier with this file name. 
     excelWorkbook = (Excel.Workbook)System.Runtime.InteropServices.Marshal.BindToMoniker(@"C:\July.xlsm"); 

     Microsoft.Office.Interop.Excel.Sheets excelSheets = excelWorkbook.Worksheets; 
     string currentSheet = "July 2015"; 
     Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(currentSheet); 
     Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)excelWorksheet.UsedRange; 
     string sValue = (range.Cells[_row, _column] as Microsoft.Office.Interop.Excel.Range).Value2.ToString(); 
     //string sValue = (range.Cells[_row, _column] as Microsoft.Office.Interop.Excel.Range).get_Value(range).ToString(); 

     MessageBox.Show(sValue); 
    } 
相關問題