Консультация № 187575
16.10.2013, 19:26
89.41 руб.
0 2 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Мне требуется найти в документе Excel текст (метку) #p# и заменить своими данными. Я сделал так
Код:

var
Ex, Workbook, FitToPagesTall,FitToPagesWide,
CenterHorizontally, CenterVertically, Orientation, PaperSize:Variant;
p_, p1_,replace, range : OleVariant;
begin
Ex := CreateOleObject('Excel.Application');
Ex.Application.EnableEvents := false;
Ex.DisplayAlerts := False;
Workbook := Ex.WorkBooks.Open('C:\Temp\Ob.xlsx');
Ex.Visible := false;

Ex.ActiveWorkBook.WorkSheets[5].Select;
p1_:=LabeledEdit1.Text;
Ex.Cells.Replace(What:=#p#,Replacement:=p1_ );

Ex.DisplayAlerts:=True;
Ex.Application.EnableEvents := true;
Ex.Application.DisplayAlerts := True;
Ex.ActiveWorkBook.SaveAs('C:\Temp\Temp.xlsx);
Ex.ActiveWorkBook.Close(0);
Ex.Visible :=false;
end;

У меня получается что заполняется весь лист. Как правильно сделать?
Благодарю заранее за помощь.

Обсуждение

Неизвестный
17.10.2013, 08:44
общий
это ответ
Здравствуйте, Владимир!

В целом у вас все правильно, только строка поиска должна идти в кавычках.

Проверенный код программы - в приложении.
В прикрепленном архиве - эталонный и результирующий файлы (Лист 5)
Метка #p# менялась на Text.

Вопросы - пишите в форум.

Приложение:
var
Ex, Workbook, FitToPagesTall,FitToPagesWide,
CenterHorizontally, CenterVertically, Orientation, PaperSize:Variant;
p_, p1_,replace, range : OleVariant;
begin
Ex := CreateOleObject('Excel.Application');
Ex.Application.EnableEvents := false;
Ex.DisplayAlerts := False;
Workbook := Ex.WorkBooks.Open('C:\Temp\Ob.xlsx');
Ex.Visible := false;

Ex.ActiveWorkBook.WorkSheets[5].Select;
p1_:=LabeledEdit1.Text;
Ex.Cells.Replace(What:= '#p#',Replacement:=p1_ );

Ex.DisplayAlerts:=True;
Ex.Application.EnableEvents := true;
Ex.Application.DisplayAlerts := True;
Ex.ActiveWorkBook.SaveAs('C:\Temp\Temp.xlsx');
Ex.ActiveWorkBook.Close(0);
Ex.Visible :=false;
end;
Прикрепленные файлы:
давно
Посетитель
352040
133
17.10.2013, 11:02
общий
Благодарю. Это то что нужно. Тему можно закрывать.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Форма ответа