Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.201.209] |
|
Сообщ.
#1
,
|
|
|
Я в процедуре запускаю Excel и ищу там строку. Потом не закрывая Excel я осуществляю поиск еще раз, но вылетает ошибка. Т.е. мне надо тогда знать открыта ли рабочая книга с которой я работаю и если открыта, то ищу, а если нет то открываю. Как узнать открыта ли она.
|
Сообщ.
#2
,
|
|
|
Цитата Smoke, 06.11.2005, 12:11:03, 907422 - а в первый раз не вылетает ошибка? Если ты открываешь рабочую книгу, то значит, ошибка не в этом. Попоробуй искать сначала листа или в обратном направлении. Ну а если хочешь знать, открыта ли твоя рабочая книга, можешь попробовать GetActiveOleObject или, наверное, лучше FindWindow Потом не закрывая Excel я осуществляю поиск еще раз, но вылетает ошибка |
Сообщ.
#3
,
|
|
|
Смотри. В первый раз я запускаю Excel и рабочую книгу с именем OrgName, там я ищу нужную строку. Потом допустим я ищу другую строку, тут я опять проверяю, а открыта ли рабочая книга OrgName? Т.е. пользователь мог закрыть Excel после первого поиска, тогда все просто, мы опять создаем CreateOLEobject. А если пользователь не закрыл Excel, то нам же его не надо опять криэйтить. Тогда мы проверяем а запущен ли он. Но этого мало, нужно еще знать окрыта ли рабочая книга, что бы еще раз ее не открывать, а работать с ней же. Вот это мне и нужно. Как узнать открыта ли рабочая книга OrgName в Excel?
|
Сообщ.
#4
,
|
|
|
var Excel, WorkBooks: variant; OrgNameOpened: boolean; i: integer; begin OrgNameOpened := false; try // Получаем открытый Excel Excel := GetActiveOleObject('Excel.Application'); // Проверяем все открытые рабочие книги, и если в названии одной из них // есть 'OrgName', то искомая книга открыта WorkBooks := Excel.WorkBooks; for i := 1 to WorkBooks.Count do if Pos('OrgName', WorkBooks.Item[i].Name) > 0 then begin OrgNameOpened := true; Break; end; except end; Excel := Unassigned; WorkBooks := Unassigned; // Если книга не открыта, то открываем ее if not OrgNameOpened then begin CreateOleObject... end; end; |
Сообщ.
#5
,
|
|
|
СПАСИБО!!!!
Без тебя я бы это сделал намного позднее! |