Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перенос данных из excel в power point [D7]


Страницы:   1 2 3 4

kossxsasha ©   (2014-04-15 11:34:00) 

Ребята помогите пожалуйста я пишу уже не в один форум но все только читают и ни чего не отвечают.Я подозреваю что тут не так все сложно.С помощью одного хорошего человека я намуил вот такой код который ищет в PP определенный данные( в данном случае имеется только одна ссылка, но их будет много ) и заменяет их на другие. var
ppApp:variant;
ppPres, ppSlide, ppShape : Variant;
i, j : integer;
s : string;
procedure TForm1.Button1Click(Sender: TObject);

procedure FindAndReplace(ppPres: Variant; SearchStr, ReplaceStr: string);
begin
for i := 1 to ppPres.Slides.Count do
begin
ppSlide := ppPres.Slides.Item(i);
for j := 1 to ppSlide.Shapes.Count do
begin
ppShape := ppSlide.Shapes.Item(j);
s := ppShape.TextFrame.TextRange.Text;
s := StringReplace(s, SearchStr, ReplaceStr, [rfReplaceAll]);
ppShape.TextFrame.TextRange.Text := s;
end;
end;
end;
begin
ppApp:=CreateOleObject('PowerPoint. Application');
ppPres:= ppApp.Presentations.Open('D:\p.ppt' , False, False, True);
ppApp.visible:=true;
FindAndReplace(ppPres, '%сылка%', 'привет');
end;

end.

Но ни как не получается сделать так, чтобы определенные данные искались в Excel и вставлялись в эти ссылки в PP. Пробовал аналогичным способом, но моих знаний и мастерства не хватило, так как я можно сказать новичок в этих делах. Помогите кто чем может добрые люди!


kossxsasha   (2014-04-23 16:30:00) [1]

это когда я тему создал.


brother   (2014-04-23 15:48:00) [2]

> до этого все работало идеально

это когда? финальный код же тут появился?


kossxsasha   (2014-04-23 13:15:00) [3]

>а никаких параметров не надо для задания этого textrange?
Дело в том что до этого все работало идеально, незнаю что потом случилось но стал выделять эту строку..


junglecat   (2014-04-23 12:57:00) [4]

> "указанное значение выходит за допустимые пределы" и выделяет
>
> s:= ppShape.TextFrame.TextRange.Text

а никаких параметров не надо для задания этого textrange?


kossxsasha   (2014-04-23 12:25:00) [5]

только что на другом форуме ответили, что мой код полностью работоспособен!  делаю вывод- виндовс 8 и новый МС ворд не лучшее средство работы с делфи...


kossxsasha   (2014-04-23 12:10:00) [6]

>brother ©   (23.04.14 12:01) [56]
вот так у меня прекрасно работает...

procedure TForm1.Button1Click(Sender: TObject);
var
excel: variant;
e: string;
begin
excel:=CreateOleObject('Excel.Application');
excel.Workbooks.Open('c:\test\1.xls');
//excel.visible:=true;
e:=excel.Range['a1'];
showmessage(e);
excel.quit;
end;
у меня тоже, я же говорю по отдельности что ексель что ПП прекрасно работают, по крайней мере ПП работал..


kossxsasha   (2014-04-23 12:08:00) [7]

вот еще что только что заметил... если я делаю так
procedure TForm1.Button1Click(Sender: TObject);

procedure FindAndReplace(ppPres: Variant; SearchStr, ReplaceStr: string);
begin
for i:= 1 to ppPres.Slides.Count do
begin
  ppSlide:= ppPres.Slides.Item(i);
  for j:= 1 to ppSlide.Shapes.Count do
  begin
    ppShape:= ppSlide.Shapes.Item(j);
    s:= ppShape.TextFrame.TextRange.Text;
    s:= StringReplace(s, SearchStr, ReplaceStr, [rfReplaceAll]);
    ppShape.TextFrame.TextRange.Text:=s;
    end;
end;
end;
begin
{exel:=CreateOleObject('Excel.Application');
exel.Workbooks.Open('D:\e.xls');
exel.visible:=true;}

ppApp:=CreateOleObject('PowerPoint.Application');
ppPres:= ppApp.Presentations.Open('D:\p.ppt', False, False, True);
ppApp.visible:=true;
//e:=exel.Range['a1'];
FindAndReplace(ppPres, '%LINK1%', 'e');

end;

end.
то в ПП ЛИНК меняется на просто "е" но про это показывает ошибку
"указанное значение выходит за допустимые пределы" и выделяет
s:= ppShape.TextFrame.TextRange.Text;эту строку, обе переменные s и e обозначены string  может тут какая то проблема?


brother   (2014-04-23 12:02:00) [8]

а, еще раз выложите последний код, что вы пробуете сейчас...


brother   (2014-04-23 12:01:00) [9]

вот так у меня прекрасно работает...

procedure TForm1.Button1Click(Sender: TObject);
var
 excel: variant;
 e: string;
begin
excel:=CreateOleObject('Excel.Application');
excel.Workbooks.Open('c:\test\1.xls');
//excel.visible:=true;
e:=excel.Range['a1'];
showmessage(e);
excel.quit;
end;


kossxsasha   (2014-04-23 11:58:00) [10]

извиняюсь за косяк с кодом


kossxsasha   (2014-04-23 11:58:00) [11]

Сделал так
<CODEexel:=CreateOleObject('Excel.Application');
exel.Workbooks.Open('D:\e.xls');
exel.visible:=true;
e:=exel.Range['a1'];
ShowMessage(e);
sleep(1);>
в ответ выводит 222 так же как и в документе.
Как узнать что код дошел до sleep?
Проблема в том, что при работе только с ПП (поиск и замена %LINK1% все работает) также и с екселем, но когда я пытаюсь из экселя достать эти "222" и вставить в %LINK1% то появляется проблема.


brother   (2014-04-23 11:45:00) [12]

выполните В НОВОМ проекте
exel:=CreateOleObject('Excel.Application');
exel.Workbooks.Open('D:\e.xls');
exel.visible:=true;
e:=exel.Range['a1'];
sleep(1);


до sleep исполнение доходит? чему равна переменная e ?


brother   (2014-04-23 11:43:00) [13]

1. В видимо читаете через раз? я специально указал %LINK1%, дабы не перепутать с другими %LINK%.
2. Но это не критично, ведь AV все еще есть?


kossxsasha   (2014-04-23 11:21:00) [14]

>> в надписи

это что?
именно [47] делали с заменой в exe и в презентации?
Вставка-надпись в нее пишу %Link%, так точно и там и там менял..


brother   (2014-04-23 11:13:00) [15]

> в надписи

это что?
именно [47] делали с заменой в exe и в презентации?


kossxsasha   (2014-04-23 10:53:00) [16]

А такой вопрос, если у меня %link% находится в надписи это ни на что не влияет?


kossxsasha   (2014-04-23 10:51:00) [17]

Все сделал не помогло..(


brother   (2014-04-23 10:37:00) [18]

> %LINK%

те %LINK1%


brother   (2014-04-23 10:36:00) [19]

> Вызов был отклонен

1. поробуйте выполнить exe от имени администратора.
2.
> '%сылка%'

заменить на %LINK% в программе и в пп.


kossxsasha   (2014-04-23 10:16:00) [20]

>KilkennyCat
Спасибо! Только вот самой главной проблемы это не решило(


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо