vba - 使用 Powershell 在 Visio 中部分格式化文本的问题

标签 vba powershell text formatting visio

我在 VBA 示例中看到,部分格式化 Visio 形状文本使用 characters.begin 和 characters.end 属性来选择要格式化的文本部分。

现在我在将其调整为我的 Powershell 脚本时遇到问题 - begin 属性似乎是只读的:

[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).getType()
IsPublic IsSerial Name         BaseType
-------- -------- ----         --------                  
True     False    ShapeClass                               System.__ComObject
[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).Text
Hello World
[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).Characters.Begin
0
[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).Characters.End
11
[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).Characters.CharCount
11
[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).Characters.End = 5
[DBG]: PS C:\Windows\system32>>> $visioObjects.($_.key).Characters.End 
11

这里是复制代码的缩写:

$appVisio = New-Object -ComObject Visio.Application
$docsObj = $appVisio.Documents
$docObj = $docsObj.Add("")

# Set the active page of the document to page 1
$pagsObj = $appVisio.ActiveDocument.Pages
$pagObj = $pagsObj.Item(1)
$shpObj = $pagObj.DrawRectangle(0, 0, 1, 1)
$shpObj.text = 'Hello World'
$shpObj.Characters.Begin = 5 # <======================== Won't accept
$shpObj.Characters.Begin # <======================== Returns 0, makes me cry

谁能解释为什么这不起作用?

最佳答案

问题实际上出在您工作链的上一级。 Begin 是一个读写属性,但 Shape.Characters 是只读的 ( MSDN link )。

虽然您不能直接修改 $shpObj.Characters.Begin,但您可以这样做:

$chars = $shpObj.Characters
$chars.Begin = 5

然后按照您将要使用 $shpObj.Characters 的方式继续使用 $chars

关于vba - 使用 Powershell 在 Visio 中部分格式化文本的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014255/

相关文章:

excel - 如何从列表框中填充文本框?

Excel VBA Shell.Namespace 返回 Nothing

excel - 多维数组(1 到 #) - Lbound 显示为 0,而不是 1?

azure - 如何检查特定的 Azure ARM 资源是否存在,如果不存在则使用 PowerShell 创建它

java - 将长文本拆分为多行代码,最好的方法是什么?

excel - 限制具有多个日期条件的方法过滤器

sql-server - 查找使用SQL Server登录名的NT用户(Windows登录名)

powershell - Cim_PhysicalMemory 和 Win32_ComputerSystem 返回不同的内存量

python - NLP - 使用哪种技术对段落标签进行分类?

java - 如何设置文本格式?