微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

作为子过程的一部分,使用sendkeys VBA在Visio中压缩图像

如何解决作为子过程的一部分,使用sendkeys VBA在Visio中压缩图像

我通常会制作visio文档,并在每个页面上粘贴从其他应用程序粘贴的图像。这些文件很大,因此需要压缩,而这并不容易。我希望能够遍历每个页面并将所有图像压缩到一定数量(75%)。到目前为止,我有一个选择页面上所有图像的子程序,并且有一个使用send键打开图像压缩窗口并以75%的速度运行压缩的子程序。问题是两者将无法同时运行。如果先选择所有图像,然后分别运行压缩,则SendKeys压缩效果很好。但是在同一个子目录中执行不起作用。我在下面使用的代码。我能想到的是,某些东西破坏了sendkeys的节奏,因为我没有进行压缩,而是将mc 75作为文本插入到图像下方,这就是sendkeys键。或者我以错误的方式将它们串在一起。

如果我分别运行以下命令,它们将起作用。即手动执行每个

    'selects all images on a page
Sub SelectimagesOnPage()
    Dim vsoSelection As Selection
    'add all pictures to selection
    Set vsoSelection = ActivePage.CreateSelection(visSelTypeByType,visSelModeSkipSuper,visTypeSelBitmap)
    ActiveWindow.Selection = vsoSelection
End Sub

'uses sendkeys to bring up the compress image dialogue
Sub compressImageSelection()
    'should check an image is selected. 
    SendKeys "%(jp)",True 'holds ALT while pressing JP
    SendKeys "m",True
    SendKeys "c"
    SendKeys "{TAB}{TAB}"
    SendKeys "75{ENTER}"
End Sub

但是像这样将两者放在一起是行不通的。

Sub compresspicturesOnPage()
    
    'add all pictures to selection
    Call SelectimagesOnPage
    
    'compress
    Call compressImageSelection
    
End Sub

更新:结果表明,要使上下文相关的“压缩图像”按钮和“图片格式”选项卡出现在功能菜单上,所有子项都必须完成。即。 visio必须“重新控制”。在我想做的事情上打了个洞,但至少我现在知道了!乔恩·弗尼尔(Jon Fournier)在尝试的评论中可能的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。