我正在使用带有win32com.client的Python 2.7,并试图找出如何更改Microsoft Visio 2013形状的字体名称和颜色。
下面的代码在已打开的Visio文档上创建一个矩形形状。此代码正常工作并设置形状颜色,文本和线宽,没有任何问题。
import sys, win32com.client
visio = win32com.client.Dispatch("Visio.Application")
vsoShape1 = visio.ActivePage.DrawRectangle(1,1,2,2)
vsoShape1.Cells("LineColor").FormulaU = 0
vsoShape1.Cells("LineWeight").FormulaU = "2.0 pt"
vsoShape1.FillStyle = "None"
vsoShape1.Text = "This is a test"
vsoShape1.Cells("Char.size").FormulaU = "20 pt"
尝试了不同的方法来更改导致错误消息的字体名称和字体颜色。
这两行代码都会导致此错误消息:pywintypes.com_error:( - 214703567,'发生异常。',(0,u' Drawing4 - Visio Standard', u' \ n \ n意外的文件结尾。',无,0,-2032466967),无)
vsoShape1.Cells("Font.Name").FormulaU = "Courier"
vsoShape1.Cells("Font.Bold").FormulaU = "True"
接下来的三行代码都会导致类似的错误消息而没有文件结束错误:pywintypes.com_error:( - 214703567,'发生异常。',(0,u' Drawing4 - Visio Standard',你' \ n \ nNAME?',无,0,-2032466907),无)
vsoShape1.Cells("Char.Font").FormulaU = "Courier"
vsoShape1.Cells("Char.colorIndex").FormulaU = 16
vsoShape1.Cells("Font.Bold").FormulaU = 0
导致多次尝试:无法设置DrawRectangle.xxxxx。
vsoShape1.fontName = "Courier"
vsoShape1.Bold = True
vsoShape1.Bold = 1
答案 0 :(得分:3)
我看到你尝试了不同的东西,使文字大胆而没有成功。我找到了解决方案,我将把它和其他样式选项一起发布。把它们全部搞清楚是很烦人的,因为几乎没有任何明确的文档,所以我希望这会对某人有所帮助。
import win32com.client
from win32com.client import constants as vis
# gencache.EnsureDispatch will ensure constants are built
app = win32com.client.gencache.EnsureDispatch( 'Visio.Application' )
# hide the window if you want
#app.Visible = 0
shape = app.ActivePage.DrawRectangle(1,1,2,2)
# text in shape
shape.Text = 'Text'
# fill color of shape
shape.Cells( 'Fillforegnd' ).FormulaU = 'RGB(255,255,0)'
# shape without fill
shape.FillStyle = "None"
# color of border line
shape.Cells( 'LineColor' ).FormulaU = 'RGB(0,0,255)'
# shape without border line
shape.LineStyle = "None"
# line pattern, numbers for patterns can be looked up in visio, they are displayed in the pattern drop down
shape.Cells( 'LinePattern' ).FormulaU = '3'
# line weight
shape.Cells( 'LineWeight' ).FormulaU = '0.1'
# text color
shape.CellsSRC( vis.visSectionCharacter, 0, vis.visCharacterColor ).FormulaU = 'RGB(255,0,0)'
# size of text
shape.Cells( 'Char.size' ).FormulaU = '20 pt'
# vertical alignment of text, values are 0,1,2
shape.Cells( 'VerticalAlign' ).FormulaU = '1'
chars = shape.Characters
# here you can set which characters the following styles will be applied to
chars.Begin = 0
chars.End = chars.CharCount
# text bold, italic and underline styles, add to combine
chars.CharProps( vis.visCharacterStyle, vis.visBold + vis.visItalic + vis.visUnderLine )
# text strikethrough
chars.CharProps( vis.visCharacterStrikethru, True )
答案 1 :(得分:1)
这将设置颜色和字体。
# Microsoft Office Visio Constants
visCharacterFont = 0
visCharacterColor = 1
visSectionCharacter = 3
visCharacterDblUnderline = 8
visSectionFirstComponent = 10
设置文字颜色
vsoShape.CellsSRC(visSectionCharacter, 0, visCharacterColor).FormulaU = "THEMEGUARD(RGB(0,0,0))"
设置字体
vsoShape.CellsSRC(visSectionCharacter, 0, visCharacterFont).FormulaU = 100
字体编号描述为"一个整数,表示系统上安装的Fonts集合的索引。零(0)表示默认字体"。文档没有说明这个整数是否总是相同或根据安装的字体而变化。我通过运行一个宏并查看VB脚本的输出来获得该数字。