Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 有办法旋转对象吗?_Excel_Vba - Fatal编程技术网

Excel 有办法旋转对象吗?

Excel 有办法旋转对象吗?,excel,vba,Excel,Vba,我有一个宏,它将从预先格式化的模板向当前文档追加一个页面。此页面插入基于用户选择的图片,这些图片具有标准excel支持的图像(即.jpg、.png、.bmp)以及PDF(从只能另存为PDF/DWG/DXF文件类型的AutoCAD程序中删除。我遇到的问题是,我无法像旋转常规图像那样旋转横向打印格式的图像。我知道问题可能是,并非所有对象都可以旋转,并且Shaperage选项可能不允许旋转。这就是g说,在VBA中有可能做到这一点吗 我曾尝试使用OLEobject shaperange选项,以及将PDF

我有一个宏,它将从预先格式化的模板向当前文档追加一个页面。此页面插入基于用户选择的图片,这些图片具有标准excel支持的图像(即.jpg、.png、.bmp)以及PDF(从只能另存为PDF/DWG/DXF文件类型的AutoCAD程序中删除。我遇到的问题是,我无法像旋转常规图像那样旋转横向打印格式的图像。我知道问题可能是,并非所有对象都可以旋转,并且Shaperage选项可能不允许旋转。这就是g说,在VBA中有可能做到这一点吗

我曾尝试使用OLEobject shaperange选项,以及将PDF作为图片插入(据我所知,MS Office不支持该选项)。我还尝试将OLEobject选择为形状,但没有任何效果

Set rng = crrntWorkbook.Sheets(1).Range("B" & tempRow)
'Allows for the insertion of PDF files into the workbook
Set oleobj = ActiveSheet.OLEObjects.Add(Filename:=txtFileName, link:=False, DisplayAsIcon:=False)
With oleobj
    'Inserts the picture into the correct cell
    oleobj.Top = rng.Top
    oleobj.Left = rng.Left
    'If the image is wider than it's height, image will be scaled down by it's width, otherwise it's height
    If oleobj.Width > oleobj.Height Then
        oleobj.IncrementRotation = 90
        oleobj.Width = 545
        oleobj.Left = (570 - oleobj.Width) / 2
        oleobj.Top = oleobj.Top + 2
        'Centers the image
    Else
        oleobj.Height = 625
        oleobj.Left = (550 - oleobj.Width) / 2
        oleobj.Top = oleobj.Top + 2
    End If
End With

预期结果是图像在插入时会旋转,但我会得到“运行时错误'438'对象不支持此属性或方法”或“运行时错误-2147024809如果使用shaperange方法,形状已锁定且无法旋转”

此外,在
with
语句中,您不需要继续引用
oleobject
,您只需将其余的属性/方法调用放在为您查找的对象中即可。VBA也可能是这种情况?通过VBA:在将PDF作为对象插入(临时工作表上)后,选择它,复制它并以图片格式粘贴,然后使用shaperange旋转。(可能需要一些清晰度)@EvR我已经有了一段代码来处理和旋转所有office支持的img文件类型,但不幸的是,由于某些图片文件通过另一个应用程序保存为PDF,我还需要一种方法来处理PDF。选择OLEObject时,它是作为PDF/JPG复制,还是作为OLEObject复制?代码是什么?我是一个在使用Excel处理PDF方面,我的能力有点不足。顺便说一句,谢谢你的帮助!@EvR这似乎确实有效,非常感谢你的帮助。幸运的是,分辨率没有太大改变!