Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2015, 15:30   #1
Rompler
Пользователь
 
Регистрация: 08.11.2014
Сообщений: 12
Счастье Удаление лишних листов в Excel

Всем привет!
Начал писать небольшую программку для обработки даннх в Excel
Мне необходимо удалить лишние листы в Excel которые в конце имени содержат символ 2
Код:
ExlApp := CreateOleObject('Excel.Application');
ExlApp.Visible := false;
ExlApp.DisplayAlerts := False;
FindRes := FindFirst('D:\GPS\Поездки\*.xls', faAnyFile, SR);
s:=SR.Name;
FindRes := FindFirst('D:\GPS\Стоянки\*.xls', faAnyFile, SR);
p:=SR.Name;
if ((s='') or (p='')) then ShowMessage('Новых данных для обработки не найдено')
else
begin
ExlApp.Workbooks.Open('D:\GPS\Поездки\'+s);
for i:=1 to ExlApp.Worksheets.count do c:=i;
j:=0;
while j<>c do begin
j:=j+1;
n:='2';
b:=Exlapp.workbooks.sheets.item[j].name;
r:=Pos(n,b);
if r=0 then begin
end
 else
 ExlApp.Workbooks.sheets.item[j].delete;

end;
При компиляции получаю ошибку (Method 'sheets' not supported by automation object)
Подскажите что не так делаю?
Rompler вне форума Ответить с цитированием
Старый 01.05.2015, 18:31   #2
lexaltd
Форумчанин
 
Регистрация: 21.07.2008
Сообщений: 192
По умолчанию

А так?
Код:
ExlApp.Workbooks[ExlApp.Workbooks.Count].Sheets[j].Delete
//или
ExlApp.ActiveWorkbook.Worksheets[j].Delete;

Последний раз редактировалось lexaltd; 01.05.2015 в 18:40.
lexaltd вне форума Ответить с цитированием
Старый 02.05.2015, 22:34   #3
Rompler
Пользователь
 
Регистрация: 08.11.2014
Сообщений: 12
По умолчанию

Пробовал. В обоих случаях вылезает сообщение
Method 'sheets' not supported by automation object.
Rompler вне форума Ответить с цитированием
Старый 03.05.2015, 00:00   #4
Rompler
Пользователь
 
Регистрация: 08.11.2014
Сообщений: 12
По умолчанию

Код HTML:
while j<>c do begin
j:=j+1;
n:='- 2';
r:=Pos(n,Exlapp.ActiveWorkbook.Worksheets[j].name);
if r=0 then begin
end
 else
Exlapp.ActiveWorkbook.sheets[j].delete;
end;
Листы удаляет но с ошибкой Неверный индекс
Rompler вне форума Ответить с цитированием
Старый 03.05.2015, 21:34   #5
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Работа с ActiveX с MS Office очень зависит от версии установленного пакета MS Office.

В документации иногда написаны процедуры для старых версий.
Лучше пользоваться подсказками в VBA. Т.е. в бейсике MS Office задать команду и смотреть набор полей, который он предлагает. Потом корректирвоать это все в Delphi.

Потом ставить проверку версии MS Office, и в зависимости от версии подставлять нужный набор полей.
knight вне форума Ответить с цитированием
Старый 04.05.2015, 19:24   #6
Rompler
Пользователь
 
Регистрация: 08.11.2014
Сообщений: 12
По умолчанию

Большое спасибо за ответы ребята
Разобрался
PHP код:
while j<= ExlApp.Worksheets.count do begin
j
:=j+1;
n:=' - 2';
p:=Exlapp.ActiveWorkbook.Worksheets[j].name;
r:=Pos(n,p);
if 
r=0 then begin
  end
  
else
  
Exlapp.ActiveWorkbook.Worksheets[j].delete;
end
Есть другой вопрос не по теме: Как реализовать условие проверки закраски строк в DBGrid? Если все строки в DBGrid = Color(clLime) тогда ...
Rompler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Удаление лишних пробелов Поксочка Помощь студентам 4 13.01.2014 23:12
удаление лишних символов Den1zzkkk0 SQL, базы данных 2 27.01.2012 13:27
Удаление лишних строчек Lau Microsoft Office Excel 28 29.09.2010 16:11
Удаление лишних пробелов. qwertytol Общие вопросы C/C++ 5 16.05.2010 15:43