明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1199|回复: 7

[提问] excel插入图片-无法正常运行

[复制链接]
发表于 2022-8-8 21:11:08 | 显示全部楼层 |阅读模式
  1. (defun excel-inspic (xlapp  sh-n   ID    path
  2.              xlapprelease   LST    /
  3.              H  H1   L    Mergerange
  4.              P  Pic   Picname  sc
  5.              ShapeRange   W    W1
  6.              xlrange  xlsheet
  7.             )
  8.           ;插入图片
  9.           ;xlapp excel对象
  10.           ;sh-n sheet表名
  11.           ;id 单元格
  12.           ;path 图片路径
  13.           ;xlapprelease 程序结束后是否需要释放excel?
  14.           ;lst 预留参数
  15.   (setq  xlsheet sh-n);(vlax-get-property (vlax-get-property (vlax-get-property xlapp 'activeworkbook) 'Sheets) 'Item sh-n))
  16.   (setq  Pic (vlax-invoke-method (vlax-invoke-method xlsheet 'Pictures) 'Insert path))
  17.   (setq  Picname (vlax-get-property Pic 'Name))
  18.   (setq  W1 (vlax-get-property Pic 'Width))
  19.   (setq  H1 (vlax-get-property Pic 'Height))
  20.   (setq  xlrange (vlax-get-property (vlax-get (vlax-get-property xlapp "ActiveWorkbook") 'ActiveSheet) 'range id))
  21.   (setq  L (vlax-variant-value (vlax-get-property xlrange 'Left)))
  22.   (SETQ  P (vlax-variant-value (vlax-get-property xlrange 'Top)))
  23.   (SETQ  W (vlax-variant-value (vlax-get-property xlrange 'Width)))
  24.   (SETQ  H (vlax-variant-value (vlax-get-property xlrange 'Height)))
  25.   (vlax-put-property Pic 'Left L)
  26.   (vlax-put-property Pic 'Top P)
  27.   (setq  ShapeRange (vlax-get-property (vlax-get-property xlsheet 'Shapes) 'Range Picname))
  28.   (vlax-put-property ShapeRange 'LockAspectRatio)
  29.   (if (AND W
  30.      (NOT (VL-CATCH-ALL-ERROR-P W))
  31.      W1
  32.      (NOT (VL-CATCH-ALL-ERROR-P W1))
  33.      H1
  34.      (NOT (VL-CATCH-ALL-ERROR-P H1))
  35.      H
  36.      (NOT (VL-CATCH-ALL-ERROR-P H))
  37.       )
  38.     (if  (>= (/ W H) (/ W1 H1))
  39.       (progn
  40.   (SETQ SC (/ (- W (* (/ W1 H1) H)) 2))
  41.   (vlax-put-property ShapeRange 'Height H)
  42.   (vlax-invoke-method ShapeRange 'IncrementLeft SC)
  43.       )
  44.       (progn
  45.   (SETQ SC (/ (- H (* (/ H1 W1) W)) 2))
  46.   (vlax-put-property ShapeRange 'Width W)
  47.   (vlax-invoke-method ShapeRange 'IncrementTop SC)
  48.       )
  49.     )
  50.   (vlax-put-property Pic 'Placement (vlax-make-variant 1 2))
  51.   )
  52.   (princ)
  53. )

代码是在论坛找的 ,相关ActiveX方法实在是找不到说明 帮助文件里没有,求大神答疑解惑

发表于 2022-8-8 21:55:08 来自手机 | 显示全部楼层
可以在excel录制宏来参考
 楼主| 发表于 2022-8-9 08:42:28 | 显示全部楼层
自贡黄明儒 发表于 2022-8-8 21:55
可以在excel录制宏来参考

谢了 黄总 真不容易啊
 楼主| 发表于 2022-8-9 10:53:55 | 显示全部楼层
自贡黄明儒 发表于 2022-8-8 21:55
可以在excel录制宏来参考

黄总 能再详细指导一下嘛 有点抓瞎
发表于 2022-8-10 16:46:46 | 显示全部楼层
(setq xlrange (vlax-get-property
                 (setq xlsheet (vlax-get (vlax-get-property xlapp "activeworkbook")
                                         'activesheet
                               )
                 )
                 'range
                 "C40"
               )
)
(setq pic (vlax-invoke
            (vlax-invoke xlsheet 'pictures)
            'insert
            "d:\\122.bmp"
          )
)
发表于 2022-8-11 07:08:08 | 显示全部楼层
  1. ;; (excel-inspic (vlax-get xlapp 'activesheet)  "A1" "D:\\122.bmp")
  2. (defun excel-inspic (sht id path / h h1        l p pic        picname        sc shaperange w        w1 xlrang)
  3.   (setq xlrange (vlax-get-property sht 'range id))
  4.   (setq        pic (vlax-invoke
  5.               (vlax-invoke sht 'pictures)
  6.               'insert
  7.               path
  8.             )
  9.   )
  10.   (setq picname (vlax-get-property pic 'name))
  11.   (setq w1 (vlax-get-property pic 'width))
  12.   (setq h1 (vlax-get-property pic 'height))

  13.   (setq l (vlax-variant-value (vlax-get-property xlrange 'left)))
  14.   (setq p (vlax-variant-value (vlax-get-property xlrange 'top)))
  15.   (setq w (vlax-variant-value (vlax-get-property xlrange 'width)))
  16.   (setq h (vlax-variant-value (vlax-get-property xlrange 'height)))
  17.   (vlax-put-property pic 'left l)
  18.   (vlax-put-property pic 'top p)
  19.   (setq        shaperange (vlax-get-property
  20.                      (vlax-get-property sht 'shapes)
  21.                      'range
  22.                      picname
  23.                    )
  24.   )

  25.   (if (>= (/ w h) (/ w1 h1))
  26.     (progn
  27.       (setq sc (/ (- w (* (/ w1 h1) h)) 2))
  28.       (vlax-put-property shaperange 'height h)
  29.       (vlax-invoke shaperange 'incrementleft sc)
  30.     )
  31.     (progn
  32.       (setq sc (/ (- h (* (/ h1 w1) w)) 2))
  33.       (vlax-put-property shaperange 'width w)
  34.       (vlax-invoke shaperange 'incrementtop sc)
  35.     )
  36.   )
  37.   (princ)
  38. )
发表于 2023-6-24 03:25:37 | 显示全部楼层
path如何修改为插入剪贴板内的图像?
发表于 2023-6-24 17:05:25 | 显示全部楼层
Excel插入图片后,是链接类型的图片,一旦删除图片就没法显示了。如何插入时直接粘贴到excel内,而不是链接?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 22:23 , Processed in 0.171195 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表