零基础学Excel VBA-WE013【一键整理图片(下)】

一、简单演示和代码展示

零基础学Excel VBA-WE013【一键整理图片(下)】

零基础学Excel VBA-WE013【一键整理图片(下)】

零基础学Excel VBA-WE013【一键整理图片(下)】

二、关键对象/方法的分析

Shape

1. 有三个代表图形的对象:

  • Shape 对象,该对象代表文档中的单个图形。
  • Shapes 集合,该集合代表文档中的所有图形。
  • ShapeRange 集合,该集合代表文档中的图形的指定子集,如果同时处理若干图形,或处理选定的图形,可用 ShapeRange 集合。

2. Shape 的属性和方法很多,这里仅挑几个常见的进行介绍:

  • Type,图形类型,可以用常量表示,也可以直接用整数值表示。
零基础学Excel VBA-WE013【一键整理图片(下)】

  • TopLeftCell,左上角所在的单元格。注意,照片旋转会影响结果。
  • Top/Left,顶边/左边。注意,照片旋转不影响结果。
  • Width/Height,宽度/高度。
  • Rotation,旋转角度(单位是度)。
  • ScaleHeight/ScaleWidth,按指定的比例调整图形的高度/宽度。 对于图片和 OLE 对象,可以指定是相对于初始大小还是相对于当前大小来调整图形的宽度。默认为相对于图形的原有尺寸来调整宽度。
  • LockAspectRatio,调整大小时,是否保持其长宽比例不变。
  • Placement,与所在的单元格之间的附属关系,以常量表示,对应三种xlMoveAndSize:大小位置随单元格,xlFreeFloating:大小位置均固定,xlMove:大小固定,位置随单元格。
  • CopyPicture,将选定对象作为图片复制到剪贴板。

三、执行思路及过程分析

【1】定义区域

为了方便,我们把三个放图片的区域进行定义,注意,需要用 Set 。

【2】统计在 picrange3 区域的图片数量

只有是行号在 5~8 这个范围的图片,我们都将它们当成要放在 picrange3 区域的图片,用变量 pc3 来保存图片的数量。

我们范例这里,第 5~8 行只有 1 个插入图片的区域,如果存在多个,还需要判断图片所处的列号。这个实现起码并不难,只是代码会比较长,我就不进行具体的举例。

后面还要个变量 pcc,当 picrange3 有多张图片的时候,第 1 张图片的位置跟第 2 张的图片位置是不同的,pcc 就是用来指示当前是第几张图片。

【3】区域固定为一张图片时

Case 1 To 4 对应图片固定为一张的情况,再根据图片的列号 c,去区分图片是属于 picrange1 的还是 picrange2 的(小窗口展示)

【4】不定数量图片的灵活调整

我们看 Case 5 To 8,Left 和 Width 的属性,都是固定的。

Height 的属性,根据图片的数量,公式容易推导出来。

而 Top 的属性,除了需要判断图片的数量,还需要判断这是这个区域的第几张图片,这个公式的推导稍微复杂一些,在纸上画画图,还是可以推导出来的。

四、本期代码文字版

代码将通过另一篇文章来分享给有需要的朋友,敬请关注。

零基础学Excel VBA-WE013【一键整理图片(下)】


分享到:


相關文章: