2016-02-12 76 views
0

对于Excel 2010插件,我需要一种方法来更改活动工作表的单元格值。Excel更改活动工作表的单元格值

此代码有效,但会打开一个新的Excel窗口。 如何更改此项,以便从活动工作表中编辑值?

Microsoft.Office.Interop.Excel.Application objApp; 
Microsoft.Office.Interop.Excel.Workbook objBook; 

Microsoft.Office.Interop.Excel.Sheets objSheets; 
Microsoft.Office.Interop.Excel._Worksheet workSheet; 


objApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 
objApp.Visible = true; 
objBook = (Microsoft.Office.Interop.Excel.Workbook)objApp.ActiveWorkbook; 

if (objBook == null) 
    { 
     objBook = objApp.Workbooks.Add(); 
    } 

// get the collection of sheets in the workbook 

objSheets = objBook.Worksheets; 

// get the first and only worksheet from the collection of worksheets 

workSheet = (Microsoft.Office.Interop.Excel.Worksheet)objSheets.get_Item(1); 

workSheet.Cells[1, "A"] = "wert1"; 

回答

0

现在我找到了解决办法:

Microsoft.Office.Interop.Excel.Workbook objBook; 
Microsoft.Office.Interop.Excel.Sheets objSheets; 
Microsoft.Office.Interop.Excel._Worksheet workSheet; 

objBook = (Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; 

if (objBook == null) 
    { 
     objBook = objApp.Workbooks.Add(); 
    } 

// get the first and only worksheet from the collection of worksheets 

workSheet = (Microsoft.Office.Interop.Excel.Worksheet)objBook.ActiveSheet; 

workSheet.Cells[1, "A"] = "value1A"; 

来源: http://www.dreamincode.net/forums/topic/199576-getting-current-excel-application-or-workbook-in-c%23/

+0

你的代码是有点不对劲,当你调用'objSheets.get_Item(1)'是越来越第一'Workbook'中的'Worksheet',当时可能不是'Active Sheet'。这样做的正确方法是说'objBook.ActiveSheet'。如果没有工作表为“活动”,这将返回活动工作表或“Nothing”。 –

+0

是的,这样比较好。我已经更新了我的答案。 – NewDeveloper

+0

除非实际需要访问'Workbook'中的'Worksheets'的其余部分,否则您还可以移除objSheets = objBook.Worksheets'调用,因为这会对interop造成不必要的调用。 –

相关问题