заменить строку гиперссылкой в ​​файле Word powershell - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу заменить строку гиперссылкой

Я пытаюсь что-то вроде этого

Обновление:

$FindText = "[E-mail]"
$email ="asdadasd@asdada.com"
$a=$objSelection.Find.Execute($FindText)
$newaddress = $objSelection.Hyperlinks.Add($objSelection.Range,$email) )

, но это вставляет письмо в начале файласлово не заменяет строку "[E-mail]"

1 Ответ

0 голосов
/ 02 октября 2018
Add-Type -AssemblyName "Microsoft.Office.Interop.Word"
$wdunits = "Microsoft.Office.Interop.Word.wdunits" -as [type]
$objWord = New-Object -ComObject Word.Application  
$objWord.Visible = $false
$findText = "[E-mail]"
$emailAddress = "someemail@example.com"
$mailTo = "mailto:"+$emailAddress
$objDoc = $objWord.Documents.Open("Path\to\input.docx")
$saveAs = "Path\to\output.docx")
$range = $objDoc.Content
$null = $range.movestart($wdunits::wdword,$range.start)
$objSelection = $objWord.Selection
$matchCase = $false
$matchWholeWord = $true
$matchWildcards = $false
$matchSoundsLike = $false
$matchAllWordForms = $false
$forward = $true 
$wrap = 1
$format = $False
$wdReplaceNone = 0 
$wdFindContinue = 1
$wdReplaceAll = 2

$wordFound = $range.find.execute($findText,$matchCase,$matchWholeWord,$matchWildCards,$matchSoundsLike,$matchAllWordForms,$forward,$wrap)

if($wordFound)
{
    if ($range.style.namelocal -eq "normal")
    {
        $null = $objDoc.Hyperlinks.Add($range,$mailTo,$null,$null,$emailAddress)
    }
}

$objDoc.SaveAs($saveAs)
$objDoc.Close()
$objWord.Quit()
Remove-Variable -Name objWord
[gc]::Collect()
[gc]::WaitForPendingFinalizers()

Вроде некрасиво, но этот скрипт сделает то, что тебе нужно.Он загружает файл .docx, указанный с помощью $objDoc, находит все экземпляры $findText и заменяет его почтовой ссылкой для $emailAddress, а затем сохраняет изменения в $saveAs.

Большая часть этого основанана «Эй, сценарист» Артикул

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...