![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TOleContainer и Excel
Deltas © (2012-03-07 13:33:00)Можно ли сделать так, чтобы внутри котейнера отрисовывались ячейки листа не с позиции А1, а с другой... например с B2. То есть что-то вроде свойств TopRow, LeftColumn?
Deltas (2012-03-11 17:29:00) [1]
procedure TForm1.Button1Click(Sender: TObject);
var
wb: ExcelWorkbook;
ws: ExcelWorksheet;
begin
if Supports(OleContainer1.OleObjectInterface, ExcelWorkbook, wb) then
if (wb.Sheets.Count > 0) and Supports(wb.Sheets[1], ExcelWorksheet, ws) then
ws.Application.ActiveWindow.SmallScroll(1, 0, 0, 0);
end;
Так работает, но только если объект OLE открыт в серверном приложении (MS Office). В противном случае, ActiveWindow имеет значение nil. Хотелось бы крутить таблицу Excel туда-сюда без открытия листа в серверном приложении. Например, значения ячеек я ведь могу записать без открытия объекта в серверном приложении.
Deltas (2012-03-11 17:18:00) [2]Sub Макрос1()
'
' Макрос1 Макрос
'
'
ActiveWindow.SmallScroll ToRight:=1
ActiveWindow.SmallScroll Down:=1
End Sub
Пытаюсь сделать то же самое из Delphi:
В OleContainer1 (TOleContainer) создаю объект класса 'Excel.Sheet.8'.
procedure TForm1.Button1Click(Sender: TObject);
var
wb: ExcelWorkbook;
ws: ExcelWorksheet;
v: Variant;
begin
OleContainer1.Run;
if Supports(OleContainer1.OleObjectInterface, ExcelWorkbook, wb) then
if (wb.Sheets.Count > 0) and Supports(wb.Sheets[1], ExcelWorksheet, ws) then
begin
v := ws;
v.ActiveWindow.SmallScroll.ToRight := 1;
end;
end;
При нажатии Button1 получаю ошибку 'Method 'ActiveWindow' not supported by automation object'.
sniknik (2012-03-11 17:01:00) [3]без разницы, что угодно делается одинаково... - записываешь макрос, смотришь код.
Deltas (2012-03-11 16:58:00) [4]А каким образом можно прокрутить область листа, открытого в Microsoft Excel, т.е. чтобы верхняя левая ячейка была b2, например?
Deltas (2012-03-07 21:37:00) [5]Спасибо.
sniknik (2012-03-07 13:51:00) [6]Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 07.03.2012
'
'
Selection.EntireRow.Hidden = True
Selection.EntireColumn.Hidden = True
End Sub