2010-06-22 67 views
0

我打开一个使用Microsoft.Office.Interop.Excel COM接口的Excel工作表。我试图调整嵌入到工作表中的滚动条的“最大”值。我可以找到下面的滚动条:Excel Interop在工作表上操作ScrollBar

app = new Excel.Application(); 
wb = app.Workbooks.Open(
    Path.GetDirectoryName(Application.ExecutablePath)[email protected]"\template.xls", 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
    Type.Missing, Type.Missing); 

for (int sheetNum = 1; sheetNum < wb.Sheets.Count + 1; sheetNum++) 
{ 
    ws = (Excel.Worksheet)wb.Sheets[sheetNum]; 
    if (ws.Name == "Graphic") 
    { 
    foreach (Excel.Shape ctrl in ws.Shapes) 
    { 
     if (ctrl.Name == "graphicScroll") 
     { 
     // how do a cast this?? 
     break; 
     } 
    } 
    } 
    break; 
} 

一旦我得到的形状物体,虽然,我不能找出正确的投,这样我可以调整它的属性。

任何想法?

谢谢。

回答

0

想通了。我应该迭代OLEObjects并将其转换为Microsoft.Vbe.Interop.Forms

Excel.OLEObjects objects = (Excel.OLEObjects) ws.OLEObjects(Type.Missing); 
foreach (Excel.OLEObject ctrl in objects) 
{ 
    if (ctrl.Name == "graphicScroll") 
    {       
    ((Microsoft.Vbe.Interop.Forms.ScrollBar) ctrl.Object).Max = readsAtDeltaMinKeys[readsAtDeltaMin.Count-1]; 
    } 
}