макрос в Excel по OLE

iskatelsql
Дата: 27.05.2011 15:15:45
можно ли подключившись к excel как к оле серверу и открыв там документ, "заинсертить" туда макрос? нигде подобных примеров не встречал..
знаю способ с параллельным открытием второй книги и запуском макроса из нее, но хотелось бы без "костылей" возможно ли это?
RENaissance
Дата: 27.05.2011 15:19:26
Зачем в книгу инсертить макрос?
iskatelsql
Дата: 27.05.2011 15:28:14
RENaissance,

ну всем по разному... мне для скорости например... я импортирую данные из экселя, и некоторые вещи внутренним макросом делать гораздо быстрее чем используя внешнее управление
Кроик Семён
Дата: 27.05.2011 15:29:36
iskatelsql,

макрос поредназначен для однократного применения в ДАННОМ документе?
если да, то сохранять его в документ незачем, т.к. можно выполнить из Delphi все инструкции, которые планировал вставить в макрос.
Мимопроходящий
Дата: 27.05.2011 15:36:17

Hello, iskatelsql!
You wrote on 27 мая 2011 г. 12:28:14:

iskatelsql
некоторые вещи внутренним макросом делать гораздо
быстрее чем используя внешнее управление
например?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

Рябов А.С.
Дата: 27.05.2011 15:37:30
Вроде так...

var
 ExcelBlank, v:Variant;
const
 mc='Sub Frmt() '+
       ' ... '+
       'EndSub';
begin
  ExcelBlank:=ComObj.CreateOleObject('Excel.Application');
  ...
  v:=ExcelBlank.VBE.ActiveVBProject.VBComponents.Add(1);
  v.CodeModule.InsertLines(1,mc); { добавляем }
  ExcelBlank.Run('Frmt'); { запускаем }
  ExcelBlank.VBE.ActiveVBProject.VBComponents.Remove(v); { удаляем }
end;
iskatelsql
Дата: 27.05.2011 15:38:01
Кроик Семён,

так говорю ж для скорости...

в файле около 2000 строк, большинство скрытые, нужные данные в нескрытых.
соответственно импорт начинается с заполнения массива нескрытых, коих обычно 100-200
так вот это заполнение занимает секунду - полторы, т.е. все основное время импорта... макрос же заполняет этот массив мгновенно.

кстати всегда удивляло что вместо ответа на вопрос начинают убеждать что мне это нафиг не нужно
iskatelsql
Дата: 27.05.2011 15:38:46
Рябов А.С.,

спасибо! будем пробовать
Мимопроходящий
Дата: 27.05.2011 15:45:46

Hello, iskatelsql!
You wrote on 27 мая 2011 г. 12:38:01:

iskatelsql
> в файле около 2000 строк, большинство скрытые,
нужные данные в нескрытых. соответственно импорт начинается с заполнения
массива нескрытых, коих обычно 100-200
так вот это заполнение занимает секунду - полторы, т.е. все основное
время импорта... макрос же заполняет этот массив мгновенно.

как макрос связан с МАССИВОМ?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

iskatelsql
Дата: 27.05.2011 15:58:56
Мимопроходящий,

такое ощущение что я на допросе