![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перенос данных из excel в power point [D7]
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. Пробовал аналогичным способом, но моих знаний и мастерства не хватило, так как я можно сказать новичок в этих делах. Помогите кто чем может добрые люди!
KilkennyCat (2014-04-23 09:14:00) [21]нет, это означает, что для циклов рекомендуется объявлять счетчик локально, т.е. внутри функции:
ppApp:variant;
ppPres, ppSlide, ppShape : Variant;
i, j : integer; // здесь некорректно
s : string;
procedure TForm1.Button1Click(Sender: TObject);
procedure FindAndReplace(ppPres: Variant; SearchStr, ReplaceStr: string);
var i : integer; // здесь корректно
begin
for i := 1 to ppPres.Slides.Count do
kossxsasha (2014-04-23 08:33:00) [22]еще в билде пишет "for loop control variable must be simple local variable" , может это поможет..
junglecat (2014-04-22 11:49:00) [23]хз, что у тебя там с экселем. Возможно, книга просто защищена от записи, либо завис процесс экселевский
kossxsasha (2014-04-22 11:22:00) [24]Ребят ну что подскажите что с ошибкой делать?
kossxsasha (2014-04-21 15:10:00) [25]>junglecat
Спасибо я хотел сделать это позже когда заработает копирование)
junglecat (2014-04-21 15:01:00) [26]в конце неплохо бы делать exel.Quit; exel := Unassigned;
то же и для ppApp
kossxsasha (2014-04-21 14:57:00) [27]и вправду по своей глупости там должно быть две с,но теперь почему то у меня вылазиет ошибка, хотя раньше все было нормально, " project project1.exe raised exception class eoleexception with message Вызов был отклонен Process stopped Use step or run to contine" и выделяет
e:=exel.Range['a1'];эту строку..
junglecat (2014-04-21 14:45:00) [28]а там реально должно быть 'сылка', с одной 'с'?
kossxsasha (2014-04-21 14:29:00) [29]Вопрос в том что
FindAndReplace(ppPres, '%сылка%', e);не работает, получалось только то что я из одной ячейки копировал в другую, а заменить %сылка% на то что в ячейке а1 н получается..(
brother (2014-04-21 14:21:00) [30]теперь вопросы...
kossxsasha (2014-04-21 14:14:00) [31]Как и обещал, сегодня немного посидел с Delphi и вот что вышло..
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, '%сылка%', e);
end;
end.
kossxsasha (2014-04-16 14:59:00) [32]>brother ©
не надо бояться! показывайте, будем смотреть...
Спасибо!
brother (2014-04-16 14:56:00) [33]не надо бояться! показывайте, будем смотреть...
kossxsasha (2014-04-16 14:48:00) [34]brother © (16.04.14 14:32) [30]
> посидеть потролить НАЧИНАЮЩЕГО
ничего подобного! здесь, по сравнению с другими форумами, немного другой подход к вопрошающему, который может восприниматься как надменность и зазнайство, но уверяю Вас: ЭТО НЕ ТАК!
Четко формулируйте вопрос - будет четкий ответ.
Я очень надеюсь на это, просто поймите я сам люблю помогать людям чем могу , дайте мне времени я вам предоставлю свои нерабочие попытки, просто сегодня на работе завал, единственное чего я опасаюсь, так это того что после предоставления моих попыток опять начнется "да ты ни чего не смыслишь" без помощи направления на путь решения..
brother (2014-04-16 14:32:00) [35]> посидеть потролить НАЧИНАЮЩЕГО
ничего подобного! здесь, по сравнению с другими форумами, немного другой подход к вопрошающему, который может восприниматься как надменность и зазнайство, но уверяю Вас: ЭТО НЕ ТАК!
Четко формулируйте вопрос - будет четкий ответ.
brother (2014-04-16 14:30:00) [36]читаем [6], делаемс вывод: работа с
s:=Excel.Range['b2'];для Вас понятна и проста...
читаем [11] и думаем, почему не понятно как делать, что именно не получается, где ВАШ нерабочий код для разбора ошибок?
зы. Вы ничего нам не показываете из своих попыток, но настойчиво утверждаете, что все знаете...
ззы. Чего именно Вы хотите от данного сообщества? (надеюсь, опять же, не кода?)
kossxsasha (2014-04-16 14:24:00) [37]>brother ©
для нас это он и есть...
Вот именно Вы так к этому и относитесь, на других форумах я такого еще не встречал, там на мой взгляд люди которые хотят помочь человеку разобраться в его проблеме, а не как в контакте посидеть потролить НАЧИНАЮЩЕГО. Тоже самое, что учитель будет ржать над первоклассниками говоря какие они тупые.
kossxsasha (2014-04-16 14:21:00) [38]>brother ©
для нас это он и есть... но, Вы не поняли главного: мы хотим, чтобы Вы поняли суть своей проблеммы и тогда решение будет очевидным...
Подскажите пожалуйста каким образом мне помогают понять суть проблемы? Словами "да ты ни чего не смыслишь в программировании" или " полюбому код слил теперь сидит тут просит чтоб все сделали" ?
kossxsasha (2014-04-16 14:17:00) [39]>Ega23 ©
Еще один шутник? Спешал фор ю
Вот для чего такие форумы создаются? Я от вас не попросил написать мне код! Если я не понимаю в программировании-это не значит, что я не могу что то пробовать свое, с кодом мне помогли, но ни откуда я не сливал его! Поэтому я всего лишь попросил наставить на путь дабы не писать (> как мне в одной функции вывести результат поиска в другой)вот такие глупости, так как я знаю что это глупость, но если до меня не допрет, поэтому и пишу в раздел НАЧИНАЮЩИМ и как я понимаю это вообще ни на что не влияет, если тут сидят люди которые только и могут написать, что я не смыслю в программировании, все сливаю и прошу за меня код написать. Тратите только свое и мое время, если нет у вас желания помочь ( не код написать, а подсказать как можно реализовать ) то зачем мне отвечать тогда? сидите в контакте и там трольте всякие посты!
brother (2014-04-16 14:17:00) [40]> сидите в контакте и там трольте всякие посты!
для нас это он и есть... но, Вы не поняли главного: мы хотим, чтобы Вы поняли суть своей проблеммы и тогда решение будет очевидным...