Я написал следующую процедуру в моем проекте, чтобы заменить метки со значениями в Excel из программы Delphi. Он заменяет все теги на всех листах
OutF - это объект Excel Ole, Slabel - это тег, который нужно заменить, SValue - это значение для замены тега.
Например
OutF := CreateOleObject('Excel.Application');
......
ExcelOutStr(OutF,'<MY_USER_NAME>','Value for MY User Name');
А вот процедура:
procedure ExcelOutStr(OutF:Variant;SLabel,SValue:String);
var i,j:integer;
begin
try
OutF.DisplayAlerts := false;
//To place a string with linebreaks into one Cell
SValue:=StringReplace(SValue,#13#10,#10,[rfReplaceAll, rfIgnoreCase]);
for j:=1 to OutF.Sheets.Count do
begin
OutF.WorkSheets[j].Select;
if length(SValue)<250 then
begin
OutF.Cells.Replace(What:=Slabel, Replacement:=SValue, LookAt:=2,SearchOrder:=1, MatchCase:=False);
end
else
begin
//Excel .replace fails on string with length >250 so replace it in few steps
i:=1;
while i<=length(SValue) do
begin
if i+200-1<length(SValue) then
OutF.Cells.Replace(What:=Slabel, Replacement:=Copy(SValue,i,200)+SLabel, LookAt:=2,SearchOrder:=1, MatchCase:=False)
else
OutF.Cells.Replace(What:=Slabel, Replacement:=Copy(SValue,i,200), LookAt:=2,SearchOrder:=1, MatchCase:=False);
i:=i+200;
end;
end;
end;
OutF.WorkSheets[1].Select;
except
on E : Exception do ShowMessage('Error: Lablel ['+SLabel+'] '+E.Message);
end;
end;
Для Excel необходимо использовать [ 'Replace'] (http://msdn.microsoft.com/en- us/library/ff194086.aspx) метод 'Range'. Для PowerPoint см. Здесь: http://stackoverflow.com/questions/9811723/find-and-replace-text-in-powerpoint-2010-from-excel-2010-with-vba –