1添加图片
2改变大小(先选择图片)
3改变位置(先选择图片)
哪位大哥操作过吗?

解决方案 »

  1.   

    你把上面的操作用宏录下来,看看VB代码,然后再转成delphi
      

  2.   

    ActiveSheet.Shapes("Picture 1").Select
        Selection.ShapeRange.ScaleWidth 0.44, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleHeight 0.44, msoFalse, msoScaleFromBottomRight
        Selection.ShapeRange.IncrementLeft -19.5
        Selection.ShapeRange.IncrementTop -299.25
        Selection.ShapeRange.ScaleWidth 0.63, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleHeight 0.63, msoFalse, msoScaleFromTopLeft
    以上是宏代码
    怎么转换??
      

  3.   

    随便写写,没测试const
      msoScaleFromTopLeft = $00000000;
      msoScaleFromMiddle = $00000001;
      msoScaleFromBottomRight = $00000002;
      msoTrue = $FFFFFFFF;
      msoFalse = $00000000;
    var
    ActiveSheet,Excel:Variant;
    begin
    Excel:=CreateOleObject("Excel.Application"); 
    Excel.Workbooks.Open("c:\xxx.xls");
    ActiveSheet:=Excel.Worksheets("Sheet1");
    ActiveSheet.Activate;
    ActiveSheet.Shapes('Picture 1').Select;
    with ActiveSheet do
    begin
      Selection.ShapeRange.ScaleWidth( 0.44, msoFalse, msoScaleFromTopLeft);
      Selection.ShapeRange.ScaleHeight( 0.44, msoFalse, msoScaleFromBottomRight);
      Selection.ShapeRange.IncrementLeft:=-19.5;
      Selection.ShapeRange.IncrementTop:=-299.25;
      Selection.ShapeRange.ScaleWidth(0.63, msoFalse, msoScaleFromTopLeft);
      Selection.ShapeRange.ScaleHeight(0.63, msoFalse, msoScaleFromTopLeft);
      Save;
    end;
    ActiveSheet:=UnAssigned;
    Excel.close;
    Excel:=UnAssigned;
    end;
      

  4.   

    uses ComObj;
    const
      msoScaleFromTopLeft = $00000000;
      msoScaleFromMiddle = $00000001;
      msoScaleFromBottomRight = $00000002;
      msoTrue = $FFFFFFFF;
      msoFalse = $00000000;
    var
    Excel:Variant;
    ActiveSheet,ActiveShapes:Variant;
    begin
    if not OpenDialog1.Execute then exit;
    Excel:=CreateOleObject('Excel.Application');
    //打开工作簿
    Excel.Workbooks.Open(OpenDialog1.FileName);
    //激活第1个表
    ActiveSheet:=Excel.Worksheets[1];
    ActiveSheet.Activate;
    if OpenDialog1.Execute then begin
      //添加图片
      ActiveShapes:=ActiveSheet.Shapes.AddPicture(OpenDialog1.FileName,true,true,0,0,100,100);
      //选择图片
      ActiveShapes.Select;
      //调整大小
      ActiveShapes.ScaleWidth( 0.44, msoFalse, msoScaleFromTopLeft);
      ActiveShapes.ScaleHeight( 0.44, msoFalse, msoScaleFromBottomRight);
      //移动位置
      ActiveShapes.IncrementLeft(20);
      ActiveShapes.IncrementTop(20);  ActiveShapes:=UnAssigned;
    end;
    //保存
    Excel.Save;
    //释放Excel对象
    ActiveSheet:=UnAssigned;
    Excel:=UnAssigned;