Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

Как скрыть строки в Excel ?   Найти похожие ветки 

 
AntonUSAnoV   (2008-01-11 17:37) [0]

Здравствуйте Мастера!
Ситуация такая : программа генерирует отчёт по шаблону в Excel, в конкретном случае составляется список спортсменов, допустим 10 строчек (в шаблоне) вниз заполнены спец. символами типа (s1, s2, ... s10). При выполнении проги эти символы заменяются с помощью replace на фамилии спортсменов. Собственно как скрыть строки я нашёл - selection.entirerow.hide, но как можно узнать номер строки, на которой заполнение данных закончилось и как правильно выделить (select) эти строки чтобы скрыть. Или может есть какой другой способ скрыть строки ?  
Кстати данные заполняются с помощью цикла: типа

x:=0;
for i:=0 to dbmemo.lines.count do begin
x:=x+1;
selection.replace("s"+inttostr(x),buf) //где buf - строка из МЕМО
------------------------
selection.replace("s"+inttostr(x),buf);
(код примерный)
таким образом данные заполняются столько строк, сколько строк в DBMEMO.


 
Сергей М. ©   (2008-01-11 19:56) [1]


> данные заполняются столько строк, сколько строк в DBMEMO.


Великие и могучая русское языка !

Штрафы оплачиваются столько карманов, сколько карманов в ГИБДД


 
AntonUSAnoV   (2008-01-11 20:12) [2]


> Сергей М.

какое замечательное наблюдение! А по делу?


 
Сергей М. ©   (2008-01-11 20:21) [3]

Какая замечательная формулировка задачи !
Какое отношение фамилии спортсменов имеют к "делу" ?)


 
Сергей М. ©   (2008-01-11 20:30) [4]


> При выполнении проги эти символы заменяются с помощью replace
> на фамилии спортсменов


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

Жаль что туфельки тебя не интересуют.


 
AntonUSAnoV   (2008-01-11 22:03) [5]


> Сергей М.

Ну представьте что в списке виды бактерий, если Вы такой любитель флоры и фауны...


 
Dib@zol ©   (2008-01-11 22:09) [6]

> Ну представьте что в списке виды бактерий, если Вы такой
> любитель флоры и фауны...

Ошибаешься. Он ярый ненавистник всей фауны, на етом форуме обитающей )))


 
AntonUSAnoV   (2008-01-11 22:34) [7]

Ну кто может просто методы скрытия строк в Excel подсказать ?


 
Сергей М. ©   (2008-01-11 22:40) [8]


>  кто может просто методы скрытия строк в Excel подсказать
> ?


Сам Ёхель тебе и подскажет)

Стартуй запись макроса, укажи мышом строки, в контекстном меню выбери пункут скрытия, останови запись, просмотри текст записанного макроса - вуаля !

Что еще надобно, старче ?)


 
AntonUSAnoV   (2008-01-11 23:03) [9]

Так я и узнал собственно про Hide. Но суть в том что записывая макрос ты видишь что выделяешь, т.е. конкретно указываешь экселю какие строки хочешь скрыть . А у меня др. ситуация - при работе моего приложения строки заполняются по циклу, и задача сводится к тому, чтобы узнать на какой строке заполнение остановилось, и скрыть все строки начиная с этой до другой(кстати тоже маркированной). Др. словами надо найти ячейку содерж. значение (s1), передать в переменную номер строки этой ячейки, найти ячейку содерж. (s10), передать в переменную знач. строки и скрыть все строки от первой переменной до второй. О как...


 
Сергей М. ©   (2008-01-11 23:10) [10]

И что ?

Тебе трудно в полученном VBA-коде подставить вместо константы  переменную ? Или где ?


 
AntonUSAnoV   (2008-01-12 16:05) [11]

написал в коде e.selection.find("<s"+inttostr(i)+">",xlnext,xlpart,xlbycolumns
делфи сердится, говорит несовпадение типов ... как правильно найти ячейку со значением (s1>, а затем передать в переменную номер строки этой ячейки ???


 
Сергей М. ©   (2008-01-12 16:50) [12]


> говорит несовпадение типов


Сравни свой вариант вызова ф-ции с ее прототипом в excep_tlb.pas - найдешь свою ошибку.


> передать в переменную номер строки этой ячейки


r := Selection.Row


 
AntonUSAnoV   (2008-01-12 18:55) [13]

Я конечно извиняюсь бесконечно но где найти ,

> excep_tlb.pas


 
sniknik ©   (2008-01-12 19:18) [14]

с таким именем делается при имрортировании библиотеки типов, это в меню, в проектах.

есть готовые, сдесь (имена чуток исправлены)
C:\Program Files\Borland\Delphi7\Ocx\Servers\*.*


 
Сергей М. ©   (2008-01-12 19:28) [15]


>  где найти


Ты ведь пользуешь компонент TExcelApplication ?

Искать ничего не надо, поручи поиск самой IDE - если ей известно, что такое "Find" в тексте твоей программы, то ей также известно и где находится юнит, где объявлен этот самый "Find".

Установи мышиный курсор на "Find" и в контекстном меню выбери пункт Find Declaration


 
sniknik ©   (2008-01-12 19:38) [16]

> Установи мышиный курсор на "Find" и в контекстном меню выбери пункт Find Declaration
проще, зажать Ctrl и кликнуть мышкой на интересующей декларации.

только с чего ты взял, что у него TExcelApplication? нормальные герои всегда идут в обход. ;) (наверняка все через создание обьектов и "вариант")


 
Сергей М. ©   (2008-01-12 19:42) [17]


>  с чего ты взял, что у него TExcelApplication? нормальные
> герои всегда идут в обход


Вряд ли.

В параметрах вызываемой Find у автора действительно бардак, на что компилятор честно отругался. А отругаться он мог только имея прототип.


 
Сергей М. ©   (2008-01-12 19:42) [18]


>  с чего ты взял, что у него TExcelApplication? нормальные
> герои всегда идут в обход


Вряд ли.

В параметрах вызываемой Find у автора действительно бардак, на что компилятор честно отругался. А отругаться он мог только имея прототип.


 
AntonUSAnoV   (2008-01-12 19:54) [19]

Делаю так:
       
for i:=1 to 15 do begin
       e.selection.Find("<s"+inttostr(i)+">");
       r2:=e.selection.row;
       e.activeworkbook.sheets.item["Список"].rows[r2]:=hide;


ничего не происходит , поиск производится только в той ячейке, на которой стоял курсор во время сохранения шаблона... ???


 
Сергей М. ©   (2008-01-12 20:00) [20]


> sniknik ©   (12.01.08 19:38) [16]


Впрочем, судя по [19] ты оказался прав - используется олейвариантный доступ.


> AntonUSAnoV   (12.01.08 19:54) [19]



> ничего не происходит


Значит поиск был неуспешен.


> e.activeworkbook.sheets.item["Список"].rows[r2]:=hide;


А это что за несуразица ?
Ты сам-то понял, что ты здесь понаписал ?


 
__!ERIX_   (2008-01-12 20:00) [21]

Кто-нибудь знает где взять справочник с описанием по коммандам(функциям) Mасдайного Offic"a


 
Сергей М. ©   (2008-01-12 20:04) [22]


>  Mасдайного Offic"a


Нет такого.
Есть продукт Microsoft Office.
А "масдаем" принято называть технологическую линейку ОС Win9x.


>  где взять справочник с описанием по коммандам(функциям)


В соответствующих справках по VBA для кадого из продуктов в составе Офиса.


 
__!ERIX_   (2008-01-12 20:09) [23]

мда.....
типа умный.......
Но ты не прав!
почитай в инете. если ты не знаешь сам, что называют мастдайным.
>>>В соответствующих справках по VBA для кадого из продуктов в составе Офиса.  - за эту фразу рассценю тебя как неудачного умника(((.гы.


 
Максимка   (2008-01-12 20:12) [24]

>>> __!ERIX_ [23]
>>>В соответствующих справках по VBA для кадого из продуктов в составе Офиса.  - за эту фразу рассценю тебя как неудачного умника(((.гы.
во жжет


 
engine ©   (2008-01-12 20:12) [25]

> [23] __!ERIX_   (12.01.08 20:09)
> за эту фразу рассценю тебя как неудачного умника(((.гы.

А что ты хотел услышать?
ИМХО самый простой и быстрый способ разобраться


 
AntonUSAnoV   (2008-01-12 20:14) [26]


> __!ERIX_

заведи собственный вопрос, вот тут расселся,
по поводу моей проблемы, да доступ у меня через OLE , но я через Excel application даже не пробовал, может легче было бы ?

А то так приходится всё узнавать на форумах и по VBA справкам (с этим сложно)


 
Сергей М. ©   (2008-01-12 20:23) [27]


> __!ERIX_   (12.01.08 20:09) [23]


Вот из-за таких "удачных придурков", видимо, и было искажено значение сленгового выражения "маздай", и теперь по всему Тырнету им крестят ни в чем не повинную NT-линейку)


> AntonUSAnoV   (12.01.08 20:14) [26]



> я через Excel application даже не пробовал, может легче
> было бы ?


Конечно легче)

На то компоненты и придуманы, чтобы облегчить жизнь программеру


 
Сергей М. ©   (2008-01-12 20:34) [28]


>  AntonUSAnoV


Видишь ли, тут дело только и не столько в выборе способа доступа к объекту автоматизации, а в смыле Паскаль-предложения, описанного тобой.

В выражении ты использовал оператор присваивания, в правой части выражения у тебя фигурирует идентификатор hide. Что это и где-как он у тебя объявлен ?


 
AntonUSAnoV   (2008-01-12 20:43) [29]

В VBA , полученного макросом из Excel, код был примерно такой: selection.entirerow.hidden, в делфе такой код не прокатил ну и я его видоизменил, если так и написать в делфе
e.activeworkbook.sheets["Список"].rows[r2].hidden; то он говорит что метод hidden из класса range завершён неверно...


 
Сергей М. ©   (2008-01-12 21:05) [30]


> метод hidden


Это не метод, это свойство. Булево.

Объект.Hidden := True


 
AntonUSAnoV   (2008-01-12 21:15) [31]

ну тада вот значит:

         e.application.rows.Find("<s"+inttostr(i)+">");
           r2:=e.selection.row;
       e.activeworkbook.sheets["Список"].rows[r2].hidden:=true;

но как сделать чтобы поиск производился на всём листе, а то у меня ищет только в одной ячейке, на которой стоял курсор во время сохранения шаблона.


 
AntonUSAnoV   (2008-01-12 21:24) [32]

[Фатальная ошибка] SaveUnit.pas(20): Internal error: SY576

Что это такое, последнее время задолбало..


 
AntonUSAnoV   (2008-01-13 14:26) [33]

Мне больше  ни кто не ответит?


 
Сергей М. ©   (2008-01-13 18:58) [34]


>  как сделать чтобы поиск производился на всём листе


Запиши соотв.макрос и посмотри в его тексте, какие параметры при этом должны быть переданы методу Find


 
AntonUSAnoV   (2008-01-13 22:49) [35]

Дулфи пишет несовпадение типов! когда пытаюсь к функции find приделать какие-нибудь параметры типа find("text",xlnext, xlpart)///


 
Сергей М. ©   (2008-01-14 08:07) [36]

Используй компонент TExcelApplication и не парься.


 
AntonUSAnoV   (2008-01-14 16:52) [37]


> [Фатальная ошибка] SaveUnit.pas(20): Internal error: SY576
>
> Что это такое, последнее время задолбало..

это глюг просто ???



Страницы: 1 вся ветка

Текущий архив: 2008.02.10;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.023 c
4-1183546348
Виктор007
2007-07-04 14:52
2008.02.10
Запись в файл


2-1198758279
Helen
2007-12-27 15:24
2008.02.10
BDE Error 8453


2-1200310863
КуХ
2008-01-14 14:41
2008.02.10
Кодировка


2-1200062264
AntonUSAnoV
2008-01-11 17:37
2008.02.10
Как скрыть строки в Excel ?


2-1200506098
Knob
2008-01-16 20:54
2008.02.10
Загрузка файлов