ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11558|回复: 10

对当前选定的图片设置缩放比例为100%的VBA怎样写?谢谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-1-26 15:05 | 显示全部楼层 |阅读模式

对当前选定的图片设置缩放比例为100%(将图片还原为原始尺寸)的VBA怎样写?以下的代码对上传的文档(文档中的图片是用扫描仪扫描后导出的图片)执行时发生错误,请大家帮忙指正,谢谢!


Sub 恢复()
    With ActiveDocument.Shapes(1)
        .ScaleHeight 1, True
        .ScaleWidth 1, True
    End With
End Sub

 

Tpzf9XZt.rar (77.67 KB, 下载次数: 49)

TA的精华主题

TA的得分主题

发表于 2007-1-26 16:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

'出现错误的原因是由于文档中没有Shape对象,先将InlineShape转化为Shape即可

Sub 恢复()
ActiveDocument.InlineShapes(1).ConvertToShape
With ActiveDocument.Shapes(1)
        .ScaleHeight 1, True
        .ScaleWidth 1, True
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-26 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢!用了上面的代码,对第一页的“副本”图片起作用,但如果直接点击第二页的图片,然后运行宏,就出现错误提示,图片并没有恢复到原来的大小。

请大家继续帮忙解决,谢谢!


对当前选定的图片设置缩放比例为100%的VBA怎样写?谢谢!

对当前选定的图片设置缩放比例为100%的VBA怎样写?谢谢!

TA的精华主题

TA的得分主题

发表于 2007-1-26 17:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

又一个bug(在VBA中这样的bug可真多).

解决办法很简单:直接点击第二页的图片,再点击一个图文框的上框或干脆移动一下图片的位置就可以运行宏了(不知为什么会这样?).

TA的精华主题

TA的得分主题

发表于 2007-1-26 18:33 | 显示全部楼层
QUOTE:
以下是引用chylhr在2007-1-26 17:32:33的发言:

又一个bug(在VBA中这样的bug可真多).

解决办法很简单:直接点击第二页的图片,再点击一个图文框的上框或干脆移动一下图片的位置就可以运行宏了(不知为什么会这样?).

谢谢chylhr!

我结合上次foshan兄的问题,以及现在的情况,分析了一下,觉得问题出在WORD图形转换上。

我们可以对比一下第二页的图片,选定时,图片外框是“嵌入型”,但格式/版式中是“四周型”,这是转化不完全的标志,记得2003刚出来时,与2000的图形很不兼容。如果我们重设一下嵌入型,或者四周型时,才彻底转换了。

以下代码在我机器上通过,请foshan兄和chylrh兄测试一下:

Sub Test()
    Dim myShape As Variant
    With Selection
        If .Type = wdSelectionInlineShape Then
            Set myShape = .InlineShapes(1).ConvertToShape
            With myShape
                .ScaleHeight 1, True
                .ScaleWidth 1, True
            End With
        End If
    End With
End Sub

如果通过,请foshan兄把它完善一下,即如果不是嵌入式时,直接应用图形大小设置。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-26 23:28 | 显示全部楼层

谢谢守柔斑竹!对于单个图片,以上代码可行,但我对word不熟悉,又急于用到,所以继续请教:我想对上传文档中的所有图片一次过恢复原来的大小,而将代码套入到以下的代码中,运行时出错,不知何故。

 Dim b As Shape
        For Each b In ActiveDocument.Shapes   '(在其中循环)
            If b.Type = wdSelectionInlineShape Then
                Set myShape = b.ConvertToShape
                With myShape
                    .ScaleHeight 1, True
                    .ScaleWidth 1, True
                End With
            End If
        Next

还有,上次守柔斑竹给我提供的代码以下代码,我还是不会将其领会,不知如何加上今次的功能要求,请大家特别是守柔斑竹帮忙。谢谢!

问:如何用代码将文档中所有的图片的大小比例一次性设置为100%

守柔版主答:

Sub Example()
    Dim oShape As InlineShape, aShape As Shape
    For Each oShape In Me.InlineShapes
        With oShape
            If .Type = wdInlineShapePicture Then
                Set aShape = .ConvertToShape
                With aShape
                    .WrapFormat.Type = 1
                    .ScaleHeight 1, True, msoScaleFromMiddle
                    .ScaleWidth 1, True, msoScaleFromMiddle
                End With
            End If
        End With
    Next
End Sub

附件中图片2出错,我一时也没整明白。

http://club.excelhome.net/viewthread.php?tid=215017&replyID=&skin=0

TA的精华主题

TA的得分主题

发表于 2007-1-27 07:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用foshan在2007-1-26 23:28:04的发言:

谢谢守柔斑竹!对于单个图片,以上代码可行,但我对word不熟悉,又急于用到,所以继续请教:我想对上传文档中的所有图片一次过恢复原来的大小,而将代码套入到以下的代码中,运行时出错,不知何故。

 http://club.excelhome.net/viewthread.php?tid=215017&replyID=&skin=0

TO foshan兄,并非是Word代码生涩,止于个人对于Word的应用习惯。

上述代码并非“代码”本身之故,原因还是我在上楼说的问题,图片转换过程出现了问题。

试一下以下代码:

Sub Test()
    Dim myShape As Variant
    Application.ScreenUpdating = False
    With ActiveDocument
        For Each myShape In .Shapes
            With myShape
                .ScaleHeight 1, True
                .ScaleWidth 1, True
            End With
        Next
        For Each myShape In .InlineShapes
            myShape.Select
            Set myShape = .InlineShapes(1).ConvertToShape
            With myShape
                .ScaleHeight 1, True, msoScaleFromMiddle
                .ScaleWidth 1, True, msoScaleFromMiddle
            End With
        Next
    End With
    Application.ScreenUpdating = True
End Sub
请注意,我加了一句“myShape.select”

我已在原链接中进行了多次测试,请您测试后将结果告诉我。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-27 15:47 | 显示全部楼层
再次感谢 守柔 斑竹!!! 代码可行,极大地提高了工作效率!!![em24][em23][em22]

TA的精华主题

TA的得分主题

发表于 2011-7-28 11:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
额。好强大的功能! 我也受用了。。谢谢版主!

TA的精华主题

TA的得分主题

发表于 2012-3-23 08:54 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 14:32 , Processed in 0.038485 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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