У меня есть электронная таблица Excel, в которой есть известная серия изображений. Мне нужно добавить тень (свойство SoftEdge) к этим изображениям. Хотя код VBA для этого прост (захвачен с помощью записи макроса), я не могу заставить работать эквивалент Delphi. Я перебираю каждое изображение, получаю дескриптор изображения, а затем устанавливаю тип SoftEdge. Я знаю, что мой дескриптор действителен, потому что я могу «MyExcelPic.Delete», и это работает. Я попытался определить MyExcelPic как OleVariant и Shape. При определении как Shape я получаю AV, при определении как OleVariant я получаю «type_ не поддерживается объектом автоматизации».
Вот соответствующий фрагмент кода...
var
MyExcelPic: Shape;
begin
...
for i := 1 to TotalPicCount do
begin
// VBA Code...
//ActiveSheet.Shapes.Range(Array("Picture 13")).Select
//Selection.ShapeRange.SoftEdge.Type = msoSoftEdgeType1
MyExcelPic := ExcelCloudSheet.Shapes.Item('Picture ' + IntToStr(i));
//MyExcelPic.Delete;
MyExcelPic.SoftEdge.type_ := msoSoftEdgeType1;
end;
Единственная странность, которую я вижу, заключается в том, что макрос Excel определяет «тип», а Delphi определяет «type_». В идеальном мире я хотел бы иметь диапазон всех фигур на листе и установить свойство SoftEdge за один проход, но на данный момент любой способ установки этого свойства великолепен...