如何使用Powershell脚本添加带有超链接的自动更正条目

问题描述 投票:0回答:1

在MS Outlook中,有一种方法可以通过重定向到正确网站的超链接自动替换某些单词,例如Google,MSN,Facebook等(我在CSV文件中有一个详尽的列表)。因此,基本上,当我键入google时,它会将其转换为超链接。

我的CSV文件:

Word, URL 
Facebook, https://facebook.com 
MSN, https://msn.com
Google, https://google.com

到目前为止,我有一个脚本,该脚本将自动更正词条添加到对象中,并使用另一个单词(不使用CSV而是单词文档)将其替换。但是我无法用超链接替换它。它会导致错误,指出自动更正条目仅接受字符串格式,而不接受对象(超链接)。参考:Add formatted text to Word autocorrect via PowerShell

[当我通过Outlook手动创建超链接并将此超链接添加到自动更正时,并且运行以下PowerShell脚本,我找不到此自动更正条目:

(New-Object -ComObject word.application).AutoCorrect.Entries | where{$_.Value -like "*http*"}

我想改写来自Use PowerShell to Add Bulk AutoCorrect Entries to Word的代码

如果有人对如何将超链接添加到自动更正条目有想法,我将不胜感激。

谢谢!

powershell csv outlook autocorrect
1个回答
0
投票

我终于设法如何为word和Outlook添加自动更正的条目。我需要创建一个带有'X行'和'2列'的.docx文件,第一列包含我想要自动更正的单词,例如'google',第二列包含'google'链接。

$objWord = New-Object -Com Word.Application
$filename = 'C:\Users\id097109\Downloads\test3.docx'
$objDocument = $objWord.Documents.Open($filename)
$LETable = $objDocument.Tables.Item(1)
$LETableCols = $LETable.Columns.Count
$LETableRows = $LETable.Rows.Count

$entries = $objWord.AutoCorrect.entries

for($r=1; $r -le $LETableRows; $r++) {
    $replace = $LETable.Cell($r,1).Range.Text
    $replace = $replace.Substring(0,$replace.Length-2)

    $withRange = $LETable.Cell($r,2).Range
    $withRange.End = $withRange.End -1
    # $with = $withRange.Text

    Try { 
        $entries.AddRichText($replace, $withRange) | out-null 
    }
    Catch [system.exception] {
        Write-Host $_.Exception.ToString()
    }
}

$objDocument.Close()
$objWord.Quit()

 [gc]::collect()

 [gc]::WaitForPendingFinalizers()

$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objWord)

此代码允许修改包含所有自动更正到对象链接的文件Normal.dotm(C:\ Users {您的用户ID} \ AppData \ Roaming \ Microsoft \ Templates)但是要将这些更改应用于Outlook,您必须删除“ NormalEmail.dotm”和复制/粘贴“ Normal.dotm”,并将其重命名为“ NormalEmail.dotm”

这是避免手动执行的脚本:

$FileName='C:\Users\{your id}\AppData\Roaming\Microsoft\Templates\Normal.dotm'
$SaveTo='C:\Users\{your id}\AppData\Roaming\Microsoft\Templates\NormalEmail.dotm'
Remove-Item –path $SaveTo
$Word = New-Object –ComObject Word.Application
$Document=$Word.Documents.Open($Filename)
$Document.SaveAs($SaveTo)
$Document.Close
© www.soinside.com 2019 - 2024. All rights reserved.