gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:54:23 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com