首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VBA中获取停靠的Visio模具,而不是文档模具

在VBA中获取停靠的Visio模具,而不是文档模具
EN

Stack Overflow用户
提问于 2019-01-25 01:52:09
回答 2查看 367关注 0票数 0

我正在尝试制作一个Visio宏,它将按字母顺序排列文档中第一个停靠模板中的母版。下面是我的代码。但是,Set vsoDoc = Visio.Documents.ItemFromID(0)似乎引用的不是停靠的模具,而是文档模具。如何获得停靠的模具?任何帮助都非常感谢!

代码语言:javascript
复制
Dim i As Integer
Dim vsoDoc As Visio.Document
Dim vsoDocNew As Visio.Document
Dim dictMasters As New Scripting.Dictionary
Set vsoDoc = Visio.Documents.ItemFromID(0)    'Existing Stencil

Set vsoDocNew = Visio.Documents.AddEx("New Stencil.vss", , visAddStencil)     'New Sorted Stencil

'Get the names of the existing masters and sort them

For i = 1 To vsoDoc.Masters.Count
    Call dictMasters.Add(vsoDoc.Masters(i).Name, vsoDoc.Masters(i))
Next

list = dictMasters.Keys()

Dim First As Integer, Last As Long
Dim x As Long, j As Long
Dim Temp As String

First = LBound(list)
Last = UBound(list)
For x = First To Last - 1
    For j = x + 1 To Last
        If list(x) > list(j) Then
            Temp = list(j)
            list(j) = list(x)
            list(x) = Temp
        End If
    Next j
Next x

'Drop the existing masters into the new stencil based on the sorting

For i = 1 To dictMasters.Count
   Call vsoDocNew.Masters.Drop(dictMasters(list(i - 1)), 0, 0)
Next

我希望生产一个新的模板,与停靠的模板相同的母版,但按字母顺序排列。但是,生成的新模板是通过对文档模板进行字母排序得到的。Visio.Documents.ItemFromID(0)正在返回文档模具,但我希望获得第一个停靠的模具。如何获得停靠的模板?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-25 22:22:08

您可以遍历ActiveWindow.Windows列表并找到.Type = visDockedStencilBuiltIn或.Document.Name的任何窗口,我认为您可以通过检查(.WindowState和visWSActive) = True来检查模板是否在前面

因此,基本上它的工作方式,模具并不是真正附加到您的文档,而是显示文档的窗口。因此,您必须查看文档的窗口中打开了哪些子窗口,其中每个子窗口都可以有一个关联的文档(模板)

票数 1
EN

Stack Overflow用户

发布于 2019-01-25 23:50:07

解决了!通过用下面的代码替换vsoDoc变量的赋值,我得到了想要的结果。

代码语言:javascript
复制
For i = 1 To ActiveWindow.windows.Count
    If ActiveWindow.windows(i).Type = visDockedStencilBuiltIn Then
        Debug.Print ActiveWindow.windows(i).Document.Name
        Set vsoDoc = ActiveWindow.windows(i).Document
        Debug.Print vsoDoc.Name
    End If
Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54352688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档