Член группы не найден delphi excel

Vologd

21 / 19 / 12

Регистрация: 03.11.2013

Сообщений: 866

1

18.12.2013, 22:38. Показов 10405. Ответов 14

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

В названии темы указана ошибка.
Ругается на строчку:

Delphi
1
ap.Workbooks[1].WorkSheets[13].Range['С31']:=Edit28.Text;

Все остальные эдиты работают нормально. Если убрать эдит28 то программа идет норм.
Остальныеэдиты сделаны по аналогии с этим, никакой разницы.
Пробывал:
-менять ячейку в экселе на другую, с которой работает другой эдит.
-удалять эдит и создавать заново
-пробывал создать эдит N и присвоить ему работу эдита 28 то же самое =

Добавлено через 2 минуты
Проблему решил)
переписал строчку полностью.
предполагаю, что вместо «С» латинской была русская «С».

Бился пол часа, а тут осенила) может кому пригодится, дак оставлю)))



0



Antoha5101

0 / 0 / 0

Регистрация: 02.04.2014

Сообщений: 27

26.04.2014, 21:05

2

у меня та же проблема выделяет С40 и всё тут

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
xls:= CreateOLEObject('Excel.Application');
xls.WorkBooks.Open(FileName:= 'D:2.xls');
xls.Visible:=true;
xls.Range['A6']:=Edit1.Text;
xls.Range['E8']:=Edit2.Text;
xls.Range['B12']:=Edit3.Text;
xls.Range['E13']:=Edit4.Text;
xls.Range['E14']:=Edit5.Text;
xls.Range['B31']:=Edit7.Text;
xls.Range['D31']:=Edit8.Text;
xls.Range['B32']:=Edit6.Text;
xls.Range['D32']:=Edit9.Text;
xls.Range['C40']:=Edit10.Text;
xls.Range['E40']:=Edit11.Text;
xls.Range['C45']:=Edit12.Text;
xls.Range['C46']:=Edit13.Text;
xls.Range['E45']:=Edit14.Text;
xls.Range['E46']:=Edit15.Text;
xls.Range['E76']:=Edit16.Text;
xls.Range['E109']:=Edit17.Text;
xls.Range['A29']:=Edit18.Text;
xls.Range['E21']:=DateTimePicker1.DateTime;
end;



0



droider

Эксперт Pascal/Delphi

4884 / 2756 / 849

Регистрация: 04.10.2012

Сообщений: 10,054

26.04.2014, 21:24

3

Antoha5101, Вы неправильно присваиваете значение диапазону. Надо

Delphi
1
xls.Range['A6'].Value :=Edit1.Text;

и т.д.



0



0 / 0 / 0

Регистрация: 02.04.2014

Сообщений: 27

26.04.2014, 21:30

4

droider, Да же поменяв на xls.Range[‘С40’].Value :=Edit1.Text; ошибка выскакивает та же. остальные Edits работают нормально, если этот отключить.



0



Эксперт Pascal/Delphi

4884 / 2756 / 849

Регистрация: 04.10.2012

Сообщений: 10,054

26.04.2014, 21:32

5

Цитата
Сообщение от Antoha5101
Посмотреть сообщение

выделяет С40

а у Вас латинская «C» прописана?

Добавлено через 1 минуту
В любом случае, значение лучше присваивать, как я написал выше.



0



0 / 0 / 0

Регистрация: 02.04.2014

Сообщений: 27

26.04.2014, 21:43

6

droider, «С» латинская. прописал все edit по вашей рекомендации всё один ответ((



0



Эксперт Pascal/Delphi

4884 / 2756 / 849

Регистрация: 04.10.2012

Сообщений: 10,054

26.04.2014, 21:51

7

Antoha5101, выложите сообщение компилятора об ошибке при указании на эту строчку



0



0 / 0 / 0

Регистрация: 02.04.2014

Сообщений: 27

26.04.2014, 22:04

8

droider, компилятор да же не выскакивает. а картинку ошибки почему то не даёт отправить((

Добавлено через 2 минуты
droider, подскажите как картинку прикрепить



0



Эксперт Pascal/Delphi

4884 / 2756 / 849

Регистрация: 04.10.2012

Сообщений: 10,054

26.04.2014, 22:08

9

Цитата
Сообщение от Antoha5101
Посмотреть сообщение

компилятор да же не выскакивает

компилятор никуда выскакивать не должен Он должен указать текст в сообщении об ошибке.
Его и выложите сюда. Картинка мне ни к чему.

Цитата
Сообщение от Antoha5101
Посмотреть сообщение

подскажите как картинку прикрепить

На будущее. Картинки, архивы и пр. прикрепляются к сообщению через «Расширенный режим» в окне сообщения. Там уже на панели инструментов будет значок скрепки.
Кликаете по нему, выбираете необходимый файл и загружаете его.



0



0 / 0 / 0

Регистрация: 02.04.2014

Сообщений: 27

26.04.2014, 22:37

10

droider, вот такое выдаёт

Миниатюры

EOleSysError with message 'Член группы не найден'
 



0



21 / 19 / 12

Регистрация: 03.11.2013

Сообщений: 866

27.04.2014, 12:49

 [ТС]

11

А в самом экселе у этой ячейки числовой формат?! Я подзабыл конечно, давно делфи не открывал) Но там тоже может ошибка возникать.

Добавлено через 6 минут
п.с. хотя не, там тогда в ходе выполнения программы ошибка будет, а не при компиляции…



0



fatal error

136 / 128 / 29

Регистрация: 10.04.2012

Сообщений: 357

27.04.2014, 12:50

12

Проще проект приложить с екселевским файлом.



0



Volhv

0 / 0 / 0

Регистрация: 15.11.2012

Сообщений: 124

23.05.2016, 13:06

13

У меня выдает такую же ошибку

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        begin
            // Подключение к Excel
            xlFile.Workbooks.Open(OpenDialog.FileName);
            // получаем активную рабочаю книгу
            xlBook:=xlFile.ActiveWorkBook;
            // получаем активный лист
            xlSheet:=xlBook.ActiveSheet;
            //определяем количество строк и столбцов таблицы
            Rows:=xlSheet.UsedRange.Rows.Count;
            //считываем данные всего диапазона
            xlFile:=xlSheet.UsedRange.Value;
            RzStringGrid.RowCount:=Rows;
            DM.ADOConnection1.BeginTrans;
            for I:=1 to Rows do
            begin
              with DM.PTable2Inst do
              begin
                Parameters.ParamByName('@Col_1').Value:=xlSheet.Cells(I,1).Value;
              end;
            end;
            DM.PTable2Inst.ExecProc;
            DM.ADOQuery1.Close;
            DM.ADOQuery1.Open;
            DM.ADOConnection1.CommitTrans;
        end;

Не могу понять в чем дело.

Добавлено через 24 минуты
Выдает ошибку именно на это:

Цитата
Сообщение от Volhv
Посмотреть сообщение

xlSheet.Cells(I,1).Value



0



21 / 19 / 12

Регистрация: 03.11.2013

Сообщений: 866

23.05.2016, 15:03

 [ТС]

14

Может попробовать число в строку перевести? inttostr(i)



0



0 / 0 / 0

Регистрация: 15.11.2012

Сообщений: 124

24.05.2016, 10:46

15

Цитата
Сообщение от Vologd
Посмотреть сообщение

Может попробовать число в строку перевести? inttostr(i)

Если бы все было так просто. Мне нужно значение ячейки записать а таблицу



0



    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    user posted image

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

    Соблюдайте общие правила форума

    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как запустить программу/файл? (и дождаться ее завершения)
    5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры — внедрение в удаленное адресное прстранство)
    … (продолжение следует) …


    Внимание:
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки — бан.
    Мат в разделе — бан на три месяца…


    Полезные ссылки:
    user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


    Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

    >
    Delphi и Excel 2007

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    28.12.07, 07:53

      Здравствуйте!
      у меня такая проблема…в 2003 офисе этот кусок нормально работает:

      ExpandedWrap disabled

        VSheet3.ChartObjects[2].Chart.SetSourceData(

          VSheet2.Range[VSheet2.Cells[countshop + 5,4],

          VSheet2.Cells[countshop + 5,RowItogo-1]], xlRows);

      но в 2007 ругается, что что Член группы не найден

      Подскажите пожалуйста в чём проблема и как её решить.

      Заранее признателен


      RuSA



      Сообщ.
      #2

      ,
      28.12.07, 14:06

        Фактически здесь три COM-вызова.
        Их надо поочереди выполнить и сразу станет ясно на какой именно операции проблема.

        ExpandedWrap disabled

             {  var X1, X2: OleVariant; }

             X1 := VSheet2.Range[VSheet2.Cells[countshop + 5,4];

             X2 := VSheet2.Cells[countshop + 5,RowItogo-1];

             VSheet3.ChartObjects[2].Chart.SetSourceData( X1, X2, xlRows);

        Возможно индекс неверен или что-либо из этой серии.

        Добавлено 28.12.07, 14:08
        Даже не больше чем три: вместо X1 := … еще детальнее сделать :

        ExpandedWrap disabled

             X1 := VSheet2.Cells[countshop + 5,4];

             X1 := VSheet2.Range[ X1 ];


        ScoobyDoo



        Сообщ.
        #3

        ,
        29.12.07, 06:21

          Уважаемый RuSA!
          разбил этот кусок как Вы посоветовали, ошибку выдаёт на

          ExpandedWrap disabled

            X1 := VSheet2.Range[ X1 ];

          OLE error 800A03EC

          подскажите пожалуйста как это исправить…в 2003 офисе же работает

          Добавлено 29.12.07, 06:24
          хотя в 2003 офисе при данном разбитии операторов именно на этом же месте вылазиет та же самая ошибка….может как то неверно разбито?


          Galiaf



          Сообщ.
          #4

          ,
          29.12.07, 07:12

            ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы…


            RuSA



            Сообщ.
            #5

            ,
            29.12.07, 15:26

              Цитата Galiaf @ 29.12.07, 07:12

              ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы…

              Похоже.
              Тогда можно сделвать так:
              1) самое простое — создать аналогичный код на встроенном в Excel VBScript (макросы/редактировать …),
              затем перевести этот код на Delphi.
              2) найти интерфейсы для Office2007 (наподобии файла из поставки Delphi «%Delphi%OcxServersOffice2000.pas» и работать
              через них, а не через IDispatch.

              Master

              jack128



              Сообщ.
              #6

              ,
              18.01.08, 13:57

                M

                lidhen
                не лезь в чужую ветку со своими вопросами


                onyx



                Сообщ.
                #7

                ,
                18.01.08, 14:42

                  lidhen, по окуратнее на поворотах! Новую тему создать, неужели так сложно?


                  DimaBy



                  Сообщ.
                  #8

                  ,
                  21.01.08, 07:21

                    Цитата Galiaf @ 29.12.07, 07:12

                    ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы…

                    Не очень он отличается. Писал приложение, формирующее отчет в Excell. Отчет довольно серьезный. А кроме этого всё форматирование хранится не в отдельном шаблоне, а создается программно (знаю, извращение, но тогда так надо было) .
                    Так вот — когда запустил программу на компьютере с 2007-м офисом — всё отлично заработало с 1-го раза.

                    Добавлено 21.01.08, 07:38
                    вместо этого

                    ExpandedWrap disabled

                       X1 := VSheet2.Cells[countshop + 5,4];

                       X1 := VSheet2.Range[ X1 ];

                    лучше использовать вот это

                    ExpandedWrap disabled

                       X1 := VSheet2.Cells[countshop + 5,4];

                       X1 := VSheet2.Range[ X1,X1 ];

                    Я вообще не знаю, как с одним аргументом работало.


                    ScoobyDoo



                    Сообщ.
                    #9

                    ,
                    29.01.08, 06:55

                      Цитата ScoobyDoo @ 28.12.07, 07:53

                      Здравствуйте!
                      у меня такая проблема…в 2003 офисе этот кусок нормально работает:

                      ExpandedWrap disabled

                        VSheet3.ChartObjects[2].Chart.SetSourceData(

                          VSheet2.Range[VSheet2.Cells[countshop + 5,4],

                          VSheet2.Cells[countshop + 5,RowItogo-1]], xlRows);

                      но в 2007 ругается, что что Член группы не найден

                      Подскажите пожалуйста в чём проблема и как её решить.

                      Заранее признателен

                      это проблема решилась просто…надо было только у ChartObjects[2] квадратные скобки заменит на круглые.

                      дальше возникла следующая проблема:

                      ExpandedWrap disabled

                        v5 := v1.Range[v1.Cells[HomeRow-1,HomeColumn], v1.Cells[HomeRow-1,Column-1]];

                            for i := 1 to 5 do

                              begin

                                Form1.App.Charts[i].SeriesCollection.[B]Item[1][/B].XValues := v5;

                                Form1.App.Charts[i].HasLegend := False;

                              end;

                      этот отрывок кода выдаёт ту же ошибку Член группы не найден.

                      Путём разбиения определил, что ругается именно на выделенный жирным Item[1].
                      Если меняю скобки на круглые, то ошибка меняется на несовпадение типов данных.

                      Где то в инете увидел, что можно использовать без итема следующим образом

                      ExpandedWrap disabled

                        Form1.App.Charts[i].SeriesCollection(1).XValues := v5;

                      но так же в случае круглых скопок ошибка не совпадения типов, а при [] — неверный член группы.

                      Помогите, пожалуйста, решить эту проблему. Опять же в 2003 офисе исходный код работает.


                      ScoobyDoo



                      Сообщ.
                      #10

                      ,
                      01.02.08, 08:35

                        Помогите пожалуйста решить эту проблему :(


                        ScoobyDoo



                        Сообщ.
                        #11

                        ,
                        05.02.08, 11:30

                          Неужели никто из знающих не читает эту ветку? уже не знаю что можно попробовать


                          RuSA



                          Сообщ.
                          #12

                          ,
                          06.02.08, 01:25

                            Цитата ScoobyDoo @ 01.02.08, 08:35

                            Помогите пожалуйста решить эту проблем

                            Уже отвечали — например, см. сообщ. #5


                            ScoobyDoo



                            Сообщ.
                            #13

                            ,
                            06.02.08, 05:19

                              Цитата RuSA @ 06.02.08, 01:25

                              Цитата ScoobyDoo @ 01.02.08, 08:35

                              Помогите пожалуйста решить эту проблем

                              Уже отвечали — например, см. сообщ. #5

                              ну я и следовал первому пункту в 5м посте…при редактировании макроса тоже самое нормально работает…а в дельфие нет :(


                              RuSA



                              Сообщ.
                              #14

                              ,
                              06.02.08, 12:12

                                Цитата ScoobyDoo @ 29.01.08, 06:55

                                … в случае круглых скопок ошибка не совпадения типов,

                                так надо проверить в каком месте несовпадение. Возможно некорректно присваивается значение для XValues !
                                Можно проверить чтением:

                                ExpandedWrap disabled

                                     {xV: OleVariant; }

                                     xV :=  Form1.App.Charts[i].SeriesCollection.Item(0).XValues;


                                ScoobyDoo



                                Сообщ.
                                #15

                                ,
                                07.02.08, 09:09

                                  Цитата RuSA @ 06.02.08, 12:12

                                  Цитата ScoobyDoo @ 29.01.08, 06:55

                                  … в случае круглых скопок ошибка не совпадения типов,

                                  так надо проверить в каком месте несовпадение. Возможно некорректно присваивается значение для XValues !
                                  Можно проверить чтением:

                                  ExpandedWrap disabled

                                       {xV: OleVariant; }

                                       xV :=  Form1.App.Charts[i].SeriesCollection.Item(0).XValues;

                                  Извините, не понял…как проверить чтением?
                                  закомментировал

                                  ExpandedWrap disabled

                                    Form1.App.Charts[i].SeriesCollection.[B]Item[1][/B].XValues := v5;

                                    Form1.App.Charts[i].HasLegend := False;

                                  и вставил

                                  ExpandedWrap disabled

                                    xV :=  Form1.App.Charts[i].SeriesCollection.Item(0).XValues;

                                  — выдало ошибку что то типа неверной адресации.
                                  заменил 0 на 1:

                                  ExpandedWrap disabled

                                    xV :=  Form1.App.Charts[i].SeriesCollection.Item(1).XValues;

                                  — работает нормально, без ошибок…но что это даёт?

                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                  0 пользователей:

                                  • Предыдущая тема
                                  • Delphi: Система, Windows API
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0850 ]   [ 16 queries used ]   [ Generated: 17.04.23, 08:43 GMT ]  

                                   
                                  Антоныч ©
                                   
                                  (2006-10-25 16:53)
                                  [0]

                                  Всем добрый день. Постоянно пишу программы на Delphi для работы с базами данных, все отчёты оформляю в Excel. И удобно, и заказчики довольны. Если возникают трудности, то действовую стандартно: записываю макрос в Excel, затем пишу то же самое в своей программе. Но сегодня возникли трудности. При определённых условиях потребовалось удалять из отчёта небольшую картинку. Сделал макрос в Excel:
                                  ActiveSheet.Shapes(«Pozhar»).Delete
                                  перенёс в Delphi:
                                  var
                                   XLApp, WorkBk, WorkSheet: Variant;
                                  ....
                                   XLApp:=CreateOLEObject("Excel.Application");
                                   WorkBk:=XLApp.WorkBooks.Open(FileName);
                                   WorkSheet:=WorkBk.Sheets[1];
                                   ...
                                   WorkSheet.Shapes["Pozhar"].Delete

                                  На последней строчке выскакивает ошибка «Член группы не найден». Стал пробовать по-другому, попробовал получить доступ к коллекции Shapes по индексу:
                                   WorkSheet.Shapes[1].Delete
                                  или
                                   WorkSheet.Shapes.Item[1].Delete (что, в принципе, одно и то же)  — всё таже ошибка. Единственное, что «схавал» Excel — это вернул общее количество картинок на листе через
                                   kol:=Worksheet.Shapes.Count
                                   и выделил их все:
                                   Worksheet.Shapes.SelectAll
                                   Выкрутился тем, что для удаления картинки запускаю макрос, но вопрос по-прежнему остался открытым: Почему не работает напрямую?


                                   
                                  MetalFan ©
                                   
                                  (2006-10-25 19:34)
                                  [1]

                                  у меня эксель на удаление такой код придложил
                                  ActiveSheet.Shapes("Picture 1").Select
                                  Selection.Delete

                                  попробуй — может прокатит?


                                   
                                  MetalFan ©
                                   
                                  (2006-10-25 20:02)
                                  [2]

                                  у меня вот что прокатило:
                                  var
                                  XLApp, WorkBk, WorkSheet, Shp: Variant;
                                  begin
                                  ...
                                  XLApp := GetActiveOleObject("Excel.Application");
                                  WorkBk := XLApp.Workbooks[1];
                                  WorkSheet:=XLApp.ActiveSheet;
                                  Shp := WorkSheet.Shapes.Item(1);
                                  Shp.Delete;
                                  ...


                                   
                                  Shirson ©
                                   
                                  (2006-10-26 11:14)
                                  [3]

                                  Антоныч, просто нужно помнить что в отличии от Delphi, в екселевском VBA, доступ к членам коллекций осуществляется только через .item() и только с круглыми скобками.


                                   
                                  Антоныч ©
                                   
                                  (2006-10-26 16:31)
                                  [4]

                                  MetalFan: Спасибо, помогло.
                                  Однако вопрос всё-равно остался открытым. Например, Sheets — это тоже коллекция в Excel (так написано в help-e), и доступ осуществляется через квадратные скобки (см. как у меня выше). Только что попробовал написать
                                  WorkSheet:=WorkBk.Sheets.Item(1)
                                  Вылетела та же ошибка: «Член группы не найден».

                                  Shirson: В том же help-е написано, что свойство Item является у большинства коллекций используемым по-умолчанию, поэтому можно обращаться как через Item, так и без него (по типу TList в Delphi). Например, как коллекция Sheets. Такое ощущение, что к Shapes в данном случае слово «большинство» не относится :-)


                                   
                                  MetalFan ©
                                   
                                  (2006-10-26 16:48)
                                  [5]

                                  count проверяй… на всякий случай



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

                                  Модераторы: MetalFan

                                  Поиск:

                                  Ответ в темуСоздание новой темы
                                  Создание опроса
                                  > Работа с Excel из Delphi, В цикле выделить диапазон ячеек… 

                                  V

                                     

                                  Опции темы

                                  DimassS
                                  Дата 12.4.2006, 05:51 (ссылка)
                                  | (нет голосов)
                                  Загрузка ... Загрузка …




                                  Быстрая цитата

                                  Цитата

                                  Шустрый
                                  *

                                  Профиль
                                  Группа: Участник
                                  Сообщений: 90
                                  Регистрация: 12.4.2006
                                  Где: Россия, Иркустк

                                  Репутация: нет
                                  Всего: 2

                                  Никак не могу программно выделить диапазон ячеек в Excel, помогите кто знает. Пока зациклился на этом:

                                  Код

                                  var
                                    i,j,l,y,t: integer;
                                    Excel: Variant;
                                    a: array [0..100] of string;
                                    p,o: string;
                                  begin
                                  Excel := CreateOleObject('Excel.Application');
                                     Excel.Visible := True;
                                    Excel.WorkBooks.Add;
                                    l:=DataModule1.Query1.FieldCount-1 ;
                                    DataModule1.Query1.First;
                                     i:=0;
                                      repeat
                                      begin
                                      i:=i+1;
                                      for j:=0 to l do
                                      begin
                                      y:=j+1;
                                      t:=y+1;
                                        p:=DBGridEh1.Columns[j].Title.Caption;
                                        o:=DBGridEh1.Columns.Items[j].Title.Caption;
                                        if (p=o) then begin
                                        Excel.ActiveWorkBook.ActiveSheet.range(cells(i,y),cells(i,t)).select;//хочу выделить  но выкидывает сообщение "Член группы не найден"
                                        Excel.ActiveWorkBook.ActiveSheet.range.Selection.Merge;//затем объединить
                                         end;

                                              DataModule1.Query1.Next;
                                        end;
                                    end;
                                    until DataModule1.Query1.Eof;  }

                                  PM MAIL ICQ   Вверх
                                  Albinos_x
                                  Дата 12.4.2006, 07:56 (ссылка)
                                  | (нет голосов)
                                  Загрузка ... Загрузка …




                                  Быстрая цитата

                                  Цитата

                                  Evil Skynet
                                  ****

                                  Профиль
                                  Группа: Комодератор
                                  Сообщений: 3288
                                  Регистрация: 28.5.2004
                                  Где: X-6120400 Y-1 4624650

                                  Репутация: 15
                                  Всего: 108

                                  Цитата
                                  cells(i,y)

                                  Это что?

                                  PS: пользуйтесь тегом [code=delphi]

                                  ———————

                                  «Кто владеет информацией, тот владеет миром»    
                                  Уинстон Черчилль

                                  PM MAIL ICQ   Вверх
                                  ~FoX~
                                  Дата 12.4.2006, 08:04 (ссылка)
                                  | (нет голосов)
                                  Загрузка ... Загрузка …




                                  Быстрая цитата

                                  Цитата

                                  НЕ рыжий!!!
                                  ****

                                  Профиль
                                  Группа: Участник Клуба
                                  Сообщений: 2819
                                  Регистрация: 8.10.2003
                                  Где: Зеленоград

                                  Репутация: 1
                                  Всего: 68

                                  Range(‘A1:E11’).Select
                                  вроде так.

                                  ———————

                                  user posted image
                                  …множественность никогда не следует полагать без необходимости…

                                  PM MAIL WWW ICQ Jabber   Вверх
                                  Albinos_x
                                  Дата 12.4.2006, 08:15 (ссылка)
                                  | (нет голосов)
                                  Загрузка ... Загрузка …




                                  Быстрая цитата

                                  Цитата

                                  Evil Skynet
                                  ****

                                  Профиль
                                  Группа: Комодератор
                                  Сообщений: 3288
                                  Регистрация: 28.5.2004
                                  Где: X-6120400 Y-1 4624650

                                  Репутация: 15
                                  Всего: 108

                                  к примеру у меня так работает без проблем:

                                  Код
                                  ...
                                  for j:=1 to cont-1 do
                                       begin
                                       sim:=AddresColExcel(5+j*5)+'6';
                                       sim1:=AddresColExcel(10+J*5)+'9';
                                       ExcelApplication1.Range[sim, sim1].MergeCells:=true;
                                  ...

                                  AddresColExcel -> http://forum.vingrad.ru/index.php?showtopic=84634

                                  Это сообщение отредактировал(а) Albinos_x — 12.4.2006, 08:54

                                  ———————

                                  «Кто владеет информацией, тот владеет миром»    
                                  Уинстон Черчилль

                                  PM MAIL ICQ   Вверх
                                  Albinos_x
                                  Дата 12.4.2006, 08:59 (ссылка)
                                  | (нет голосов)
                                  Загрузка ... Загрузка …




                                  Быстрая цитата

                                  Цитата

                                  Evil Skynet
                                  ****

                                  Профиль
                                  Группа: Комодератор
                                  Сообщений: 3288
                                  Регистрация: 28.5.2004
                                  Где: X-6120400 Y-1 4624650

                                  Репутация: 15
                                  Всего: 108

                                  это тоже не прокатит:

                                  Цитата
                                  Excel.ActiveWorkBook.ActiveSheet.range.Selection.Merge

                                  читай статью по указанной выше ссылке там всё подробно расписано, как работать с Excel…

                                  ———————

                                  «Кто владеет информацией, тот владеет миром»    
                                  Уинстон Черчилль

                                  PM MAIL ICQ   Вверх
                                  DimassS
                                  Дата 12.4.2006, 09:15 (ссылка)
                                  | (нет голосов)
                                  Загрузка ... Загрузка …




                                  Быстрая цитата

                                  Цитата

                                  Шустрый
                                  *

                                  Профиль
                                  Группа: Участник
                                  Сообщений: 90
                                  Регистрация: 12.4.2006
                                  Где: Россия, Иркустк

                                  Репутация: нет
                                  Всего: 2

                                  Всем большое, прибольшое спасибо!!!!! smile

                                  PM MAIL ICQ   Вверх



















                                  Ответ в темуСоздание новой темы
                                  Создание опроса
                                  Правила форума «Delphi: ActiveX/СОМ/CORBA»

                                  Rrader
                                  Girder

                                  Запрещено:

                                  1. Публиковать ссылки на вскрытые компоненты

                                  2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

                                  • Литературу по Delphi обсуждаем здесь
                                  • Действия модераторов можно обсудить здесь
                                  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
                                  • Вопросы по реализации алгоритмов рассматриваются здесь
                                  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Delphi
                                  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

                                  Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

                                   

                                  0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
                                  0 Пользователей:
                                  « Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »

                                  Привожу, пару цитатт из справки Архангельского как работать с листами. Функцию копирования поищите как посоветовал Valico или же в хелпе к Вижуалбейсику в Excel-e
                                  ___________________________________

                                  Класс сервера Excel

                                  Модули Excel97, Excel2000, ExcelXP

                                  Описание

                                  Сервер COM класса TExcelApplication используется для управления из вашего приложения программой Excel. Сервер может использоваться в виде компонента, расположенного на странице Servers, или экземпляр сервера может создаваться программно во время выполнения. См. темы Работа с компонентами страницы библиотеки Servers, Работа с Microsoft Office как с серверами COM, в которых поясняется различие этих подходов, а также тему Адаптация к версии Microsoft Office, в которой рассмотрены вопросы адаптации приложения к версии Excel. Для работы со свойствами и методами серверов COM ознакомьтесь также с темой Обращение к свойствам и методам серверов COM.

                                  Некоторые свойства и метода сервера вы можете найти по указанным выше ссылкам: Некоторые свойства и Некоторые методы. Методика получения информации по другим свойствам и методам изложена в теме Где найти свойства и методы серверов COM.

                                  Среди множества свойств сервера следует отметить свойство ActiveWorkbook — активная рабочая книга Excel. Это объект ExcelWorkbook, реализующий интерфейс _Workbook и имеющий в свою очередь собственные свойства и методы.

                                  Если в Excel открыто несколько книг, получить к ним доступ можно с помощью свойства Workbooks — собрания всех открытых в данный момент книг. Каждая книга представлена в этом собрании как объект ExcelWorkbook. К отдельной книге в массиве Workbooks можно обращаться по индексу. Например, ExcelApplication1.Workbooks:1: – это книга, которая была открыта первой.

                                  Создание новой книги ExcelWorkbook и включение ее в собрание Workbooks осуществляется методом Add объекта Workbooks.

                                  Объект ExcelWorkbook в свою очередь имеет собрание листов Worksheets. К отдельному листу – объекту ExcelWorkSheet можно получить доступ по индексу, как и в собрании Workbooks. В объекте ExcelWorkbook имеется свойство ActiveSheet – активный лист книги.

                                  Создание нового листа ExcelWorkSheet и включение его в собрание Worksheets осуществляется методом Add объекта Worksheets.

                                  Можно не создавать в приложении отдельных объектов для книги и листа, а работать с книгами и листами непосредственно через объект сервера. Но обычно все-таки удобнее создать такие объекты. В этом случае код получается более компактным и наглядным.

                                  Создание объектов может выполняться тремя способами: с помощью компонентов страницы Servers, с помощью программного создания соответствующих объектов, и с помощью создания объектов интерфейсов.

                                  При использовании компонентов вы должны поместить на форме компоненты TExcelWorkbook – рабочая книга, и – TExcelWorksheet – лист. Программное создание таких объектов, а заодно и программное создание объекта сервера, может выглядеть так:


                                  var ExcelApplication1: TExcelApplication;

                                  ExcelWorkbook1: TExcelWorkbook;

                                  ExcelWorksheet1: TExcelWorkSheet;

                                  ...
                                  // Создание объектов
                                  ExcelApplication1 := TExcelApplication.Create(Self);
                                  ExcelWorkbook1 := TExcelWorkbook.Create(Self);
                                  ExcelWorksheet1 := TExcelWorkSheet.Create(Self);
                                  ... // Использование объектов
                                  // Удаление объектов
                                  ExcelApplication1.Free;
                                  ExcelWorkbook1.Free;
                                  ExcelWorksheet1.Free;

                                  Остальное не зависит от того, используются компоненты или программно созданные объекты. Подключение объектов книги и листа к активной книге и листу сервера выполняется методом ConnectTo
                                  , аргументом которого указывается объект сервера. Например:


                                  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
                                  ExcelWorksheet2.ConnectTo(
                                  ExcelWorkbook2.ActiveSheet as ExcelWorksheet);

                                  Во втором операторе используется операция as, чтобы привести интерфейс к требуемому типу.

                                  Следующий оператор создает новую книгу и подключает к ней объект ExcelWorkbook1:
                                  [/code]
                                  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(
                                  EmptyParam, LOCALE_USER_DEFAULT));

                                  Тут использован метод Add объекта ExcelApplication1.Workbooks.

                                  Несколько иначе выглядит работа с объектами интерфейсов:


                                  var ExcelApplication1: TExcelApplication;
                                  ExcelWorkbook1: ExcelWorkbook;
                                  ExcelWorksheet1: ExcelWorkSheet;
                                  ...
                                  ExcelApplication1 := TExcelApplication.Create(Self);
                                  ...
                                  ExcelWorkbook1 := ExcelApplication1.Workbooks.Add(
                                  EmptyParam, LOCALE_USER_DEFAULT);
                                  ExcelWorksheet1 := ExcelWorkbook1.ActiveSheet;

                                  Тут не требуется метод ConnectTo. Соответствующим переменным просто присваиваются значения интерфейсов объектов сервера.

                                  Сервер Excel имеет также свойство Windows – коллекцию открытых окон. Метод Windows.Arrange позволяет упорядочить окна. Элементы Window коллекции Windows обеспечивают доступ к свойствам, описывающим отображение документа: свернутое, развернутое, разделенное, заголовок окна, полосы прокрутки.

                                  Сервер Excel имеет свойство Dialogs, являющееся собранием объектов Dialog, которые соответствуют встроенным диалогам Word. Доступ к конкретному диалогу осуществляется через выражение вида

                                  WordApplication1.Dialogs[WdWordDialog]

                                  где константа WdWordDialog может принимать одно из предопределенных значений.
                                  [/code]

                                   У объекта книги ExcelWorkbook сервера Excel TExcelApplication имеется свойство Worksheets -  собрание листов книги. Каждый лист представлен в этом собрании как объект ExcelWorksheet.

                                  Worksheets - это объект (точнее, интерфейс Sheets), имеющий ряд свойств и методов. К конкретному листу из коллекции Worksheets можно обращаться по индексу или по имени. Например, следующие операторы открывают и активизируют первый лист книги, представленной объектом ExcelWorkbook1, передают указатель на этот лист в переменную интерфейса ExcelWorksheet1 и активизируют лист, т.е. выдвигают его на первый план в окне Excel:
                                  [code]
                                  ExcelWorksheet1 := ExcelWorkbook1.Worksheets[1] as
                                  ExcelWorksheet;
                                  ExcelWorksheet1.Activate(LOCALE_USER_DEFAULT);

                                  Свойство Worksheets имеется также в объекте сервера. Это свойство относится к активной книге. Так что следующий оператор производит операции с активной книгой, открывая в ней лист, имя которого (например, «Лист1») задано в окне редактирования Edit1:


                                  ExcelWorksheet1 := ExcelApplication1.
                                  Worksheets[Edit1.Text] as ExcelWorksheet;
                                  ExcelWorksheet1.Activate(LOCALE_USER_DEFAULT);

                                  Если лист с заданным именем отсутствует в книге, будет генерироваться исключение. Так что если имеется подобная опасность, это исключение надо перехватить, например, следующим образом:
                                  [/code]
                                  try
                                  ExcelWorksheet1 := ExcelApplication1.
                                  Worksheets[Edit1.Text] as ExcelWorksheet;
                                  ExcelWorksheet1.Activate(LOCALE_USER_DEFAULT);
                                  except
                                  ShowMessage(‘Не удалось открыть лист «‘ + Edit1.Text + ‘»‘);
                                  end;
                                  [/code]
                                  Добавить новый лист в книгу можно методом Add объекта Worksheets:

                                  function Add(Before: OleVariant; After: OleVariant;
                                  Count: OleVariant; Type_: OleVariant;
                                  lcid: Integer): IDispatch;

                                  Параметры Before или After – это объект листа, перед которым или после которого осуществляется вставка. Обычно достаточно задать только один из этих параметров, а другой сделать равным EmptyParam. Если оба параметра равны EmptyParam, то новые листы вставляются перед текущим активным листом. Параметр Count указывает число вставляемых листов. Если этот параметр равен EmptyParam, то вставляется один лист. Параметр Type_ определяет тип вставки. При значении EmptyParam вставляется новый пустой лист.

                                  Например, следующий код вставляет один новый лист перед активным листом активной книги и передает указатель на него в переменную ExcelWorksheet1:


                                  ExcelWorksheet1 := ExcelApplication1.Worksheets.Add(
                                  EmptyParam, EmptyParam, EmptyParam,
                                  EmptyParam, LOCALE_USER_DEFAULT) as ExcelWorksheet;

                                  А следующий код вставляет два новых листа после третьего листа активной книги:


                                  var After, Num: OleVariant;
                                  ...
                                  After := ExcelApplication1.Worksheets[3];
                                  Num := 2;
                                  ExcelWorksheet1 := ExcelApplication1.Worksheets.Add(
                                  EmptyParam,After,Num,EmptyParam,
                                  LOCALE_USER_DEFAULT) as ExcelWorksheet;

                                  Удалить лист из книги можно методом Delete:

                                  ExcelWorksheet1.Delete(LOCALE_USER_DEFAULT);

                                  Понравилась статья? Поделить с друзьями:
                                • Читы на word of the
                                • Читы на geometry dash word
                                • Читы для word for tanks на пк
                                • Читы word of tank
                                • Читать штрих код в excel