Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.78.185] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте!
у меня такая проблема...в 2003 офисе этот кусок нормально работает: VSheet3.ChartObjects[2].Chart.SetSourceData( VSheet2.Range[VSheet2.Cells[countshop + 5,4], VSheet2.Cells[countshop + 5,RowItogo-1]], xlRows); но в 2007 ругается, что что Член группы не найден Подскажите пожалуйста в чём проблема и как её решить. Заранее признателен |
Сообщ.
#2
,
|
|
|
Фактически здесь три COM-вызова.
Их надо поочереди выполнить и сразу станет ясно на какой именно операции проблема. { 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 := ... еще детальнее сделать : X1 := VSheet2.Cells[countshop + 5,4]; X1 := VSheet2.Range[ X1 ]; |
Сообщ.
#3
,
|
|
|
Уважаемый RuSA!
разбил этот кусок как Вы посоветовали, ошибку выдаёт на X1 := VSheet2.Range[ X1 ]; OLE error 800A03EC подскажите пожалуйста как это исправить...в 2003 офисе же работает Добавлено хотя в 2003 офисе при данном разбитии операторов именно на этом же месте вылазиет та же самая ошибка....может как то неверно разбито? |
Сообщ.
#4
,
|
|
|
ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы...
|
Сообщ.
#5
,
|
|
|
Цитата Galiaf @ ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы... Похоже. Тогда можно сделвать так: 1) самое простое - создать аналогичный код на встроенном в Excel VBScript (макросы/редактировать ...), затем перевести этот код на Delphi. 2) найти интерфейсы для Office2007 (наподобии файла из поставки Delphi "%Delphi%\Ocx\Servers\Office2000.pas" и работать через них, а не через IDispatch. |
Сообщ.
#6
,
|
|
|
M lidhen не лезь в чужую ветку со своими вопросами |
Сообщ.
#7
,
|
|
|
lidhen, по окуратнее на поворотах! Новую тему создать, неужели так сложно?
|
Сообщ.
#8
,
|
|
|
Цитата Galiaf @ ребята если я не ошибаюсь то 2007 очень сильно отличается от 2003 даже форматы файлов не совместимы... Не очень он отличается. Писал приложение, формирующее отчет в Excell. Отчет довольно серьезный. А кроме этого всё форматирование хранится не в отдельном шаблоне, а создается программно (знаю, извращение, но тогда так надо было) . Так вот - когда запустил программу на компьютере с 2007-м офисом - всё отлично заработало с 1-го раза. Добавлено вместо этого X1 := VSheet2.Cells[countshop + 5,4]; X1 := VSheet2.Range[ X1 ]; лучше использовать вот это X1 := VSheet2.Cells[countshop + 5,4]; X1 := VSheet2.Range[ X1,X1 ]; Я вообще не знаю, как с одним аргументом работало. |
Сообщ.
#9
,
|
|
|
Цитата ScoobyDoo @ Здравствуйте! у меня такая проблема...в 2003 офисе этот кусок нормально работает: VSheet3.ChartObjects[2].Chart.SetSourceData( VSheet2.Range[VSheet2.Cells[countshop + 5,4], VSheet2.Cells[countshop + 5,RowItogo-1]], xlRows); но в 2007 ругается, что что Член группы не найден Подскажите пожалуйста в чём проблема и как её решить. Заранее признателен это проблема решилась просто...надо было только у ChartObjects[2] квадратные скобки заменит на круглые. дальше возникла следующая проблема: 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]. Если меняю скобки на круглые, то ошибка меняется на несовпадение типов данных. Где то в инете увидел, что можно использовать без итема следующим образом Form1.App.Charts[i].SeriesCollection(1).XValues := v5; но так же в случае круглых скопок ошибка не совпадения типов, а при [] - неверный член группы. Помогите, пожалуйста, решить эту проблему. Опять же в 2003 офисе исходный код работает. |
Сообщ.
#10
,
|
|
|
Помогите пожалуйста решить эту проблему
|
Сообщ.
#11
,
|
|
|
Неужели никто из знающих не читает эту ветку? уже не знаю что можно попробовать
|
Сообщ.
#12
,
|
|
|
Цитата ScoobyDoo @ Помогите пожалуйста решить эту проблем Уже отвечали - например, см. сообщ. #5 |
Сообщ.
#13
,
|
|
|
Цитата RuSA @ Цитата ScoobyDoo @ Помогите пожалуйста решить эту проблем Уже отвечали - например, см. сообщ. #5 ну я и следовал первому пункту в 5м посте...при редактировании макроса тоже самое нормально работает...а в дельфие нет |
Сообщ.
#14
,
|
|
|
Цитата ScoobyDoo @ ... в случае круглых скопок ошибка не совпадения типов, так надо проверить в каком месте несовпадение. Возможно некорректно присваивается значение для XValues ! Можно проверить чтением: {xV: OleVariant; } xV := Form1.App.Charts[i].SeriesCollection.Item(0).XValues; |
Сообщ.
#15
,
|
|
|
Цитата RuSA @ Цитата ScoobyDoo @ ... в случае круглых скопок ошибка не совпадения типов, так надо проверить в каком месте несовпадение. Возможно некорректно присваивается значение для XValues ! Можно проверить чтением: {xV: OleVariant; } xV := Form1.App.Charts[i].SeriesCollection.Item(0).XValues; Извините, не понял...как проверить чтением? закомментировал Form1.App.Charts[i].SeriesCollection.[B]Item[1][/B].XValues := v5; Form1.App.Charts[i].HasLegend := False; и вставил xV := Form1.App.Charts[i].SeriesCollection.Item(0).XValues; - выдало ошибку что то типа неверной адресации. заменил 0 на 1: xV := Form1.App.Charts[i].SeriesCollection.Item(1).XValues; - работает нормально, без ошибок...но что это даёт? |