Запись данных в Ms Excel (получение доступа к Excel)
От: emergenter Россия  
Дата: 08.02.16 14:02
Оценка:
Добрый день. Хочу получить доступ к текущему открытому документу (книге) MS Excel.
Понятно как открыть книгу из файла и как создать новую книгу. А как получить доступ именно к текущей, уже открытой книге, чтобы уже в нее делать запись данных? Реально ли такое?
Re: Запись данных в Ms Excel (получение доступа к Excel)
От: glh Россия  
Дата: 09.02.16 07:53
Оценка: 3 (1)
Здравствуйте, 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 не бывает — бывает не худший вариант.
excel getactiveobject
Re[2]: Запись данных в Ms Excel (получение доступа к Excel)
От: emergen  
Дата: 09.02.16 12:10
Оценка:
Здравствуйте, 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)
От: glh Россия  
Дата: 09.02.16 12:45
Оценка:
Здравствуйте, emergen, Вы писали:

E>Здравствуйте, glh, Вы писали:


E>это на PASCAL! А на с++ есть примерчик? (облазил весь интернет и не нашел!)


«Может быть, тебе дать еще ключ от квартиры, где деньги лежат?»
Успехов!
C уважением, Алексей.
------------------------------------------------
Хороших %s не бывает — бывает не худший вариант.
Re[3]: Запись данных в Ms Excel (получение доступа к Excel)
От: glh Россия  
Дата: 09.02.16 12:47
Оценка: 3 (1)
Здравствуйте, emergen, Вы писали:

E>это на PASCAL! А на с++ есть примерчик? (облазил весь интернет и не нашел!)

Ну ладно..
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms221467(v%3Dvs.85).aspx
Успехов!
C уважением, Алексей.
------------------------------------------------
Хороших %s не бывает — бывает не худший вариант.
Re[4]: Запись данных в Ms Excel (получение доступа к Excel)
От: emergenter Россия  
Дата: 09.02.16 19:48
Оценка:
Здравствуйте, glh, Вы писали:

glh>Здравствуйте, emergen, Вы писали:


E>>это на PASCAL! А на с++ есть примерчик? (облазил весь интернет и не нашел!)

glh>Ну ладно..
glh>https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms221467(v%3Dvs.85).aspx


Это для С++! А как для кросплатформы QT будет такое чудо выглядеть?
Re[5]: Запись данных в Ms Excel (получение доступа к Excel)
От: glh Россия  
Дата: 09.02.16 20:18
Оценка: :)
Здравствуйте, emergenter, Вы писали:

E>Здравствуйте, glh, Вы писали:


glh>>Здравствуйте, emergen, Вы писали:


E>>>это на PASCAL! А на с++ есть примерчик? (облазил весь интернет и не нашел!)

glh>>Ну ладно..
E>Это для С++! А как для кросплатформы QT будет такое чудо выглядеть?

Чувак, ты это...
Успехов!
C уважением, Алексей.
------------------------------------------------
Хороших %s не бывает — бывает не худший вариант.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.