excel 使用VBA设置Visio边距

xdnvmnnf  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(174)

我想使用VBA打开一个visio文件,并更改所有的页边距的形状,然后保存文件,请帮助我!我使用下面的代码,但速度非常慢(文件大小12 Mb(80页)需要30分钟)。请帮助我!

Dim visDoc As Visio.Document
Dim visio_doc
Dim Save_visio_doc
Dim ObjVisio As Object
Dim pag As Visio.Page
Dim pagShape As Visio.shape
Set ObjVisio = CreateObject("Visio.application")
vSet visDoc = ObjVisio.Documents.Open("C\test.vsdx")
For Each pag In visDoc.Pages
    For Each pagShape In pag.Shapes
        pagShape.CellsSRC(visSectionObject, visRowText, visTxtBlkLeftMargin).FormulaU = "2 mm"
        pagShape.CellsSRC(visSectionObject, visRowText, visTxtBlkRightMargin).FormulaU = "2 mm"
        pagShape.CellsSRC(visSectionObject, visRowText, visTxtBlkTopMargin).FormulaU = "2 mm"
        pagShape.CellsSRC(visSectionObject, visRowText, visTxtBlkBottomMargin).FormulaU = "2 mm"
    Next
Next
Visdoc.Save
Visdoc.Close

如果任何人可以帮助,这将是非常感谢。

wi3ka0sx

wi3ka0sx1#

尝试更改这些边距的样式名称为Normal!通常文档中的大多数形状都使用这种样式...

Sub FixNormalStyle()
Dim vsoStyle1 As Visio.Style
Set vsoStyle1 = ActiveDocument.Styles.ItemU("Normal")
vsoStyle1.CellsSRC(visSectionObject, visRowText, visTxtBlkLeftMargin).FormulaU = "0 pt"
vsoStyle1.CellsSRC(visSectionObject, visRowText, visTxtBlkRightMargin).FormulaU = "0 pt"
End Sub

相关问题