作为子过程的一部分,使用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 (将#修改为@)