excel - 旋转图片时VBA excel .Left .Top
问题描述
我尝试了无数次,但我仍然有这个问题。我尝试使用 excel 中的宏将图片放入给定范围内。只要图片不旋转(方向= 0)就没有问题。但从图片旋转的那一刻起,一切都流血了。我已经发现图片的高度和宽度也是旋转的。但是 .top 和 .left 会发生什么?这是我的代码:
Function fotoInsert(ByVal PictureFileName As String, ByVal rng As Range)
Set pic = ActiveSheet.Pictures.Insert(PictureFileName)
If pic.ShapeRange.Rotation = 90 Then
With pic
'keep original aspect ratio
.ShapeRange.LockAspectRatio = msoTrue
'Picture's aspect is less than rng aspect then adjust the picture's width to fit rng
If (pic.Width \ pic.Height) <= (rng.Height \ rng.Width) Then
.Width = rng.Height - 1 'pictures' width is the larger height, by this line it fits exactly into range width
.Left = rng.Left + ((rng.Width - pic.Height) / 2)
.Top = rng.Top + 1
Else 'Picture's aspect is greater than rng aspect then adjust the picture's height to fit rng
.Width = rng.Height - 1 'picture's heigth is larger than its width, this line makes it exactly fit int range height
.Top = rng.Top
.Left = rng.Left
End If
.Placement = xlMoveAndSize
.PrintObject = True
End With
Else
With pic
'keep original aspect ratio
.ShapeRange.LockAspectRatio = msoTrue
'Picture's aspect is less than rng aspect then adjust the picture's width to fit rng
If (.Height \ .Width) <= (rng.Height \ rng.Width) Then
.Width = rng.Width - 1 'pictures' width is the larger height, by this line it fits exactly into range width
.Left = rng.Left + 1 'position at left range border
.Top = rng.Top + ((rng.Height - pic.Height) / 2) 'position in center of range height
Else 'Picture's aspect is greater than rng aspect then adjust the picture's height to fit rng
.Top = rng.Top + 1 'position at upper border of the range[/color]
.Height = rng.Height - 1 'picture's heigth is larger than its width, this line makes it exactly fit int range height
.Left = rng.Left + ((rng.Width - pic.Width) / 2) 'position in center of range width
End If
.Placement = xlMoveAndSize
.PrintObject = True 'make sure picture gets printed
End With
End If
End Function
所以问题出现在第一个 If 条件(旋转 = 90)中。在其他情况下,我似乎没有问题。
我用来测试的典型范围是:
"A7:N46"
解决方案
感谢您的快速回复!
我尝试做的是在预先确定的范围内适合任何给定的图片。所以是的,我也会收到旋转的图片。
这个想法是用户选择图片(最多 4 张)并自动将它们排列和调整大小以适应一张预先确定的 Excel 表。因此,我制作了 4 个场景(具有不同的范围)如何将这些图片排列在一张纸上。这是通过 switch case 在另一个例程中完成的。
到目前为止,此代码适用于未旋转的图片。从那里开始旋转的那一刻起,它就变得凌乱,图片“流出”。如果有其他方法可以解决我的问题,我很高兴在这里。
推荐阅读
- node.js - Nodejs mssql 全局连接
- python - 填充颜色属性颜色字符串 hsl 字符串不起作用
- java - 如何在谓词中对 FilteredList 结果进行优先级排序/排序?
- python - 从一个创建多个数据框
- tensorflow - 我可以在 C++ 中为 TensorFlow 添加复合运算符,以便该运算符可用于所有语言绑定吗?
- javascript - 轮播不会分页
- javascript - 将带有图像的画布保存到文件夹
- java - 在java中为“新手”使用显卡的最佳方法是什么
- jupyter-notebook - ipywidgets 不使用 jupyter/scipy-notebook docker 映像使用 nbconvert 渲染
- google-sheets - 比较数据谷歌表