Visio VBA导出PNG:如何修改分辨率、透明色等参数?
Visio VBA导出PNG自定义参数(分辨率/透明色/尺寸)解决方法
原代码里的Page.Export方法是简化版导出,只能用默认配置生成PNG,没法直接设置分辨率、透明背景、导出尺寸这类高级参数——你之前尝试的多参数Export写法无效,因为Visio的Page.Export仅支持传入文件路径这一个参数。
要自定义导出参数,得用Visio的**ExportSettings对象**来配置,它支持所有PNG导出的细节设置。以下是修改后的完整代码:
Option Explicit Sub ExportPagesAsPNGWithCustomSettings() Dim currentDoc As Visio.Document Dim currentPage As Visio.Page Dim exportSettings As Visio.ExportSettings Dim savePath As String Dim exportFilePath As String ' 获取当前文档和路径 Set currentDoc = Application.ActiveDocument savePath = currentDoc.Path & "\" ' 确保路径末尾有斜杠 ' 遍历每个页面 For Each currentPage In currentDoc.Pages ' 创建导出配置对象,指定导出格式为PNG Set exportSettings = currentDoc.ExportSettings.Add(savePath & currentPage.Name & ".png") With exportSettings ' 设置导出格式为PNG .ExportFormat = visExportFormatPNG ' 设置分辨率:visResolutionLow(96DPI)/visResolutionMedium(192DPI)/visResolutionHigh(300DPI) .Resolution = visResolutionHigh ' 设置背景透明 .TransparentBackground = True ' 设置导出范围为当前页面 .PageRange = visExportPageCurrent ' 如果需要自定义导出尺寸,取消下面两行注释并修改数值(单位:英寸) ' .CustomPageWidth = currentPage.PageSheet.CellsU("PageWidth").ResultIU / 72 ' IU转英寸 ' .CustomPageHeight = currentPage.PageSheet.CellsU("PageHeight").ResultIU / 72 ' 执行导出 .Export End With ' 释放对象 Set exportSettings = Nothing Next currentPage MsgBox "导出完成!" End Sub
关键参数说明
- Resolution:控制导出分辨率,可选值有
visResolutionLow(96DPI)、visResolutionMedium(192DPI)、visResolutionHigh(300DPI) - TransparentBackground:设为
True可导出透明背景的PNG - CustomPageWidth/CustomPageHeight:自定义导出尺寸,注意Visio的IU单位要除以72转成英寸
- PageRange:指定导出范围,
visExportPageCurrent只导出当前页面,也可以用visExportPageAll导出所有页面(这样可以去掉循环,直接一次导出)
如果想一次性导出所有页面,也可以简化代码,不用循环,直接设置PageRange = visExportPageAll即可。
内容的提问来源于stack exchange,提问作者Piotr Tetlak
相关产品推荐
相关产品推荐

