На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
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

Модераторы: Rouse_, Krid
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Delphi и Excel 2007
    Здравствуйте!
    у меня такая проблема...в 2003 офисе этот кусок нормально работает:
    ExpandedWrap disabled
      VSheet3.ChartObjects[2].Chart.SetSourceData(
        VSheet2.Range[VSheet2.Cells[countshop + 5,4],
        VSheet2.Cells[countshop + 5,RowItogo-1]], xlRows);


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

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

    Заранее признателен
      Фактически здесь три 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);

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

      Добавлено
      Даже не больше чем три: вместо X1 := ... еще детальнее сделать :
      ExpandedWrap disabled
           X1 := VSheet2.Cells[countshop + 5,4];
           X1 := VSheet2.Range[ X1 ];
        Уважаемый RuSA!
        разбил этот кусок как Вы посоветовали, ошибку выдаёт на
        ExpandedWrap disabled
          X1 := VSheet2.Range[ X1 ];

        OLE error 800A03EC

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

        Добавлено
        хотя в 2003 офисе при данном разбитии операторов именно на этом же месте вылазиет та же самая ошибка....может как то неверно разбито?
          ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы...
            Цитата Galiaf @
            ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы...

            Похоже.
            Тогда можно сделвать так:
            1) самое простое - создать аналогичный код на встроенном в Excel VBScript (макросы/редактировать ...),
            затем перевести этот код на Delphi.
            2) найти интерфейсы для Office2007 (наподобии файла из поставки Delphi "%Delphi%\Ocx\Servers\Office2000.pas" и работать
            через них, а не через IDispatch.
              M
              lidhen
              не лезь в чужую ветку со своими вопросами
                lidhen, по окуратнее на поворотах! Новую тему создать, неужели так сложно?
                  Цитата Galiaf @
                  ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы...

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

                  Добавлено
                  вместо этого
                  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 @
                    Здравствуйте!
                    у меня такая проблема...в 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 @
                          Помогите пожалуйста решить эту проблем

                          Уже отвечали - например, см. сообщ. #5
                            Цитата RuSA @
                            Цитата ScoobyDoo @
                            Помогите пожалуйста решить эту проблем

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

                            ну я и следовал первому пункту в 5м посте...при редактировании макроса тоже самое нормально работает...а в дельфие нет :(
                              Цитата ScoobyDoo @
                              ... в случае круглых скопок ошибка не совпадения типов,

                              так надо проверить в каком месте несовпадение. Возможно некорректно присваивается значение для XValues !
                              Можно проверить чтением:
                              ExpandedWrap disabled
                                   {xV: OleVariant; }
                                   xV :=  Form1.App.Charts[i].SeriesCollection.Item(0).XValues;
                                Цитата RuSA @
                                Цитата ScoobyDoo @
                                ... в случае круглых скопок ошибка не совпадения типов,

                                так надо проверить в каком месте несовпадение. Возможно некорректно присваивается значение для 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;

                                - работает нормально, без ошибок...но что это даёт?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0776 ]   [ 15 queries used ]   [ Generated: 27.09.24, 01:12 GMT ]