|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#17
|
||||
|
||||
Не знаю, отпишется ли ТС. На всякий случай отпишусь я.
Найдено рабочее решение: Программа-D2 и DLL-D7. Библиотечная функция получает страницу книги и координаты ячейки, где вставляется символ диаметра. Программа: Код:
uses OleAuto; type _DoChangeSymbol = function (OleSheet: PVariant; Col, Row: Integer): Boolean; stdcall; //external 'ChangeSymbol.dll'; procedure TForm1.Button1Click(Sender: TObject); var excel, wb, sh: Variant; lib: THandle; proc: _DoChangeSymbol; begin if OpenDialog1.Execute then try excel := CreateOleObject('Excel.Application'); excel.Visible := false; excel.DisplayAlerts := false; try excel.WorkBooks.Open(OpenDialog1.FileName); wb := excel.WorkBooks[ExtractFileName(OpenDialog1.FileName)]; sh := wb.WorkSheets[1]; sh.Cells[1, 1].Value := 'Outer d=12, Inner d=8'; lib := LoadLibrary('ChangeSymbol.dll'); if lib >= 32 then begin @proc := GetProcAddress(lib, 'DoChangeSymbol'); if @proc <> nil then proc(@sh, 1, 1); //if proc(@sh, 1, 1) then ShowMessage('Yep!') //else ShowMessage('Upssss....'); FreeLibrary(lib); end; wb.Save; finally excel.Quit; sh := UnAssigned; wb := UnAssigned; excel := UnAssigned; end; except raise Exception.Create('Error'); end; ShowMessage('Done!'); end; Библиотека: Код:
library ChangeSymbol; function DoChangeSymbol(OleSheet: PVariant; Col, Row: Integer): Boolean; stdcall; var i: Integer; ws: WideString; begin try ws := OleSheet^.Cells[Col, Row]; i := Pos('d=', ws); while i > 0 do begin ws[i] := WideChar(216); i := Pos('d=', ws); end; OleSheet^.Cells[Col, Row] := ws; Result := True; except Result := False; end; end; exports DoChangeSymbol; begin end. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. Последний раз редактировалось dr. F.I.N., 15.02.2017 в 17:21. |
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение: | ||
igr37 (15.02.2017)
|
#18
|
|||
|
|||
все вопрос закрыт - сделал с помощью DLL
Благодарю за помощь dr. F.I.N. ! |