powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Покрасить диаграмму?
2 сообщений из 2, страница 1 из 1
Покрасить диаграмму?
    #33738769
Фотография Makar4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут с задачкой столкнулся, и затык полный... :(

Есть данные в Excel, есть отчет в PowerPoint.

В PowerPoint'e есть круговые диаграммы, данные для которых берутся из Excel.
Вернее, не берутся, а линкуются.

Все бы ничего, но возникла необходимость раскрашивать сектора диаграммы не в те цвета, которые PowerPoint подставляет от себя, а в цвета, которые обозначены в том же файле Excel.

Никто не сталкивался с такой проблемой?
Или хотя бы с чем-то подобным?

Буду благодарен за любую помощь.
...
Рейтинг: 0 / 0
Покрасить диаграмму?
    #33746721
sergeyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем-то ничего сложного.
[не программер поэтому могу термины путать :))]
Сhart в powerpoint (да и во всем офисе вроде) это отдельное приложение GRAPH. Вставлено в слайд как EmbeddedOLEObject.
Описание его в \Program Files\Microsoft Office\OFFICE11\1033 в соответствующем хелповнике.

Ниже пример процедуры из работающей програмки на delphi, которая как раз и раскрашивала графики.
Вот вроде и все.

Код: plaintext
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
procedure TMForm.ColorchartsOnSlide(slide:variant);
var
 datasheet : variant;
 graph : variant;
 ci,i,k,sc,pp:integer;
 rc:boolean;
 sname:string;
 v1,v2:variant;
begin

 for i:= 1  to slide.Shapes.Count do
  if slide.Shapes.item(i).Type =  7  {msoEmbeddedOLEObject} then
  begin
   v2:=slide.Shapes.item(i).OLEFormat.ProgID;
   if pos('MSGraph.Chart',slide.Shapes.item(i).OLEFormat.ProgID)>0 then
    begin
     graph:=slide.Shapes.item(i).OLEFormat.Object;
     datasheet:=graph.Application.datasheet;
     if graph.Application.plotby =  1 {xlRows} then rc:=True
     else rc:=False;
     case graph.Type of
     {xlPie} 5 ,{xl3DPie}- 4102 :
              begin
               rc:=Not(rc);
               for sc:= 1  to  1 {graph.SeriesCollection.Count} do
                for pp:= 1  to graph.SeriesCollection(sc).Points.Count do
                 begin
                  if rc then sname:=datasheet.Cells[pp +  1 ,  1 ]
                  else sname:=datasheet.Cells[ 1 , pp +  1 ];
                  ci:=FindInPalette(sname);
                  if ci>- 1  then
                   begin
                    graph.SeriesCollection(sc).Points(pp).fill.visible:=true;
                    graph.SeriesCollection(sc).Points(pp).Interior.Color:=TPaletteRec(PaletteTree.Items[ci].data).PrimaryColor;
                   end;
                 end;
              end;
      else
               for sc:= 1  to graph.SeriesCollection.Count do
                begin
                 if rc then sname:=datasheet.Cells[sc +  1 ,  1 ]
                 else sname:=datasheet.Cells[ 1 , sc +  1 ];
                 ci:=FindInPalette(sname);
                 if ci>- 1  Then
                  begin
                   v1:=graph.SeriesCollection(sc).chartType;
                   case graph.SeriesCollection(sc).chartType of
                   {xlLine} 65 , 4  : graph.SeriesCollection(sc).Border.Color:=TPaletteRec(PaletteTree.Items[ci].data).PrimaryColor;
                   {xlPie} 5 ,{xl3DPie}- 4102  : ;
                   else graph.SeriesCollection(sc).Interior.Color:=TPaletteRec(PaletteTree.Items[ci].data).PrimaryColor;
                   end;
                   graph.application.update;
                  end;
                end;
      end;
       graph.application.update;
       graph.application.quit;
       graph:=unassigned;
       DataSheet:=unassigned;
    end;
  end;
end;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Покрасить диаграмму?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]