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



在MS Outlook中,有没有办法自动替换一些单词,如Google,MSN,Facebook等(我在CSV文件中有一个详尽的列表(,重定向到正确网站的超链接。 所以基本上当我输入谷歌时,它会将其转换为超链接。

我的 CSV 文件:

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

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

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

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

我想改编来自"使用 PowerShell 向 Word 添加批量自动更正条目"的代码

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

谢谢!

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

$objWord = New-Object -Com Word.Application
$filename = 'C:Usersid097109Downloadstest3.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{your user id}\AppData\Roaming\Microsoft\Templates( 但是,要将这些更改应用于Outlook,您必须删除"NormalEmail.dotm"和复制/粘贴"Normal.dotm"并将其重命名为"NormalEmail.dotm">

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

$FileName='C:Users{your id}AppDataRoamingMicrosoftTemplatesNormal.dotm'
$SaveTo='C:Users{your id}AppDataRoamingMicrosoftTemplatesNormalEmail.dotm'
Remove-Item –path $SaveTo
$Word = New-Object –ComObject Word.Application
$Document=$Word.Documents.Open($Filename)
$Document.SaveAs($SaveTo)
$Document.Close

最新更新