Добрый день. Хочу получить доступ к текущему открытому документу (книге) MS Excel.
Понятно как открыть книгу из файла и как создать новую книгу. А как получить доступ именно к текущей, уже открытой книге, чтобы уже в нее делать запись данных? Реально ли такое?
Re: Запись данных в Ms Excel (получение доступа к Excel)
Здравствуйте, emergenter, Вы писали:
E>Добрый день. Хочу получить доступ к текущему открытому документу (книге) MS Excel. E>Понятно как открыть книгу из файла и как создать новую книгу. А как получить доступ именно к текущей, уже открытой книге, чтобы уже в нее делать запись данных? Реально ли такое?
GetActiveObject(CLASS_ExcelApplication, nil, unk)
var
unk: IUnknown;
xl: ExcelApplication;
xlWb: ExcelWorkbook;
xlSh: ExcelWorksheet;
i, j: Integer;
m: TMenuItem;
begin
Assert(Assigned(Menu), '{4729A6A2-C2A4-4C1E-B867-6A3A885D275C}');
Assert(Assigned(Items), '{EE2EF752-B6C6-4662-AB15-E29FEE06D096}');
NewCursorGuard();
Items.Clear; // очищаем меню
Holders.Clear; // очищаем контейнеры
try
// работаем только с активным экземпляром, не знаю как получить ВСЕ отрытые
if Succeeded(GetActiveObject(CLASS_ExcelApplication, nil, unk)) then
try
if Supports(unk, ExcelApplication, xl) then
for i := 1 to xl.Workbooks.Count do begin// важно, именно с 1
xlWb := xl.Workbooks{.Item}[i];
Успехов!
C уважением, Алексей.
------------------------------------------------
Хороших %s не бывает — бывает не худший вариант.
Здравствуйте, glh, Вы писали:
glh>Здравствуйте, emergenter, Вы писали:
E>>Добрый день. Хочу получить доступ к текущему открытому документу (книге) MS Excel. E>>Понятно как открыть книгу из файла и как создать новую книгу. А как получить доступ именно к текущей, уже открытой книге, чтобы уже в нее делать запись данных? Реально ли такое?
glh>GetActiveObject(CLASS_ExcelApplication, nil, unk)
glh>
glh>var
glh> unk: IUnknown;
glh> xl: ExcelApplication;
glh> xlWb: ExcelWorkbook;
glh> xlSh: ExcelWorksheet;
glh> i, j: Integer;
glh> m: TMenuItem;
glh>begin
glh> Assert(Assigned(Menu), '{4729A6A2-C2A4-4C1E-B867-6A3A885D275C}');
glh> Assert(Assigned(Items), '{EE2EF752-B6C6-4662-AB15-E29FEE06D096}');
glh> NewCursorGuard();
glh> Items.Clear; // очищаем меню
glh> Holders.Clear; // очищаем контейнеры
glh> try
glh> // работаем только с активным экземпляром, не знаю как получить ВСЕ отрытые
glh> if Succeeded(GetActiveObject(CLASS_ExcelApplication, nil, unk)) then
glh> try
glh> if Supports(unk, ExcelApplication, xl) then
glh> for i := 1 to xl.Workbooks.Count do begin// важно, именно с 1
glh> xlWb := xl.Workbooks{.Item}[i];
glh>
это на PASCAL! А на с++ есть примерчик? (облазил весь интернет и не нашел!)
Re[3]: Запись данных в Ms Excel (получение доступа к Excel)
Здравствуйте, emergenter, Вы писали:
E>Здравствуйте, glh, Вы писали:
glh>>Здравствуйте, emergen, Вы писали:
E>>>это на PASCAL! А на с++ есть примерчик? (облазил весь интернет и не нашел!) glh>>Ну ладно.. E>Это для С++! А как для кросплатформы QT будет такое чудо выглядеть?
Чувак, ты это...
Успехов!
C уважением, Алексей.
------------------------------------------------
Хороших %s не бывает — бывает не худший вариант.