【问题标题】:How to add a link to a Visio document via Python如何通过 Python 添加指向 Visio 文档的链接
【发布时间】:2020-08-25 16:25:17
【问题描述】:

我搜索了一些代码来通过 Python 创建 Visio 文档。我想添加形状,并有超链接。这样您就可以单击形状,或者最好单击形状内的文本,然后访问一个 URL。

import os
import win32com.client

from win32com.client import constants

appVisio = win32com.client.Dispatch("Visio.Application")
appVisio.Visible =1

doc = appVisio.Documents.Add("Basic Diagram.vst")
pagObj = doc.Pages.Item(1)
stnObj = appVisio.Documents("Basic Shapes.vss")
mastObj = stnObj.Masters("Rectangle")

shpObj1 = pagObj.Drop(mastObj, 4.25, 5.5)
shpObj1.Text = "This is some text."

shpObj2 = pagObj.Drop(mastObj, 2, 2)
shpObj2.Text = """This is some more text. {\field{\*\fldinst HYPERLINK "http://www.google.com/"}{\fldrslt http://www.google.com}}"""


connectorMaster = appVisio.Application.ConnectorToolDataObject

connector = pagObj.Drop(connectorMaster, 0, 0)
connector.Cells("BeginX").GlueTo(shpObj1.Cells("PinX"))
connector.Cells("EndX").GlueTo(shpObj2.Cells("PinX"))

doc.SaveAs(r'C:\utils\MyDrawing.vsd')
doc.Close()

appVisio.Visible =0
appVisio.Quit()

RTF 链接被忽略 - 我试过了。 Visio 可以在 UI 中添加超链接。那么...有谁知道我如何在这里通过 Python 添加链接?

【问题讨论】:

    标签: python visio win32com


    【解决方案1】:

    Visio 仅支持形状上的链接(而不是文本本身内的链接)。一个形状有Hyperlinks 集合Hyperlink 对象,所以你可以添加如下:

    # shpObj2.Text = """This is some more text. {\field{\*\fldinst HYPERLINK "http://www.google.com/"}{\fldrslt http://www.google.com}}"""
    shpObj2.Text = "This is a shape with multiple links."
    
    shp2Hyperlink1 = shpObj2.Hyperlinks.Add()
    shp2Hyperlink1.Name = "Google"
    shp2Hyperlink1.Address = "http://www.google.com"
    
    shp2Hyperlink2 = shpObj2.Hyperlinks.Add()
    shp2Hyperlink2.Name = "BBC"
    shp2Hyperlink2.Address = "http://www.bbc.co.uk"
    

    实际上,这只是将单元格写入 ShapeSheet:

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多