Взаимодействие Excel Управление полосой прокрутки на рабочем листе - PullRequest
0 голосов
/ 22 июня 2010

Я открываю лист Excel, используя COM-интерфейс Microsoft.Office.Interop.Excel.Я пытаюсь настроить «максимальное» значение полосы прокрутки, встроенной в лист.Я могу найти полосу прокрутки со следующим:

app = new Excel.Application();
wb = app.Workbooks.Open(
  Path.GetDirectoryName(Application.ExecutablePath)+@"\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;
}

После того, как я получу объект формы, я не могу определить правильный бросок, чтобы я мог настроить его свойства.

Любойидеи?

Спасибо.

1 Ответ

0 голосов
/ 22 июня 2010

Разобрался. Я должен перебирать 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];
  }
}
...