Зачем обновлять дату и версию в файле Word, который не работает - PullRequest
0 голосов
/ 03 августа 2020

В моем проекте у меня есть следующий код, который находит и заменяет номер версии и дату в документе Word, но по какой-то причине он не работает. Могу я получить от вас помощь, чтобы понять, почему он не работает? Это файл ps1, который я использую в Jenkins + MSBuild. Спасибо

<#
Uses Microsoft Word automation to substitute Version and ReleaseDate values, and yield a PDF.
#>
function UpdateDocumentation {
    param (
        [string] $Path,
        [string] $Version,
        [string] $ReleaseDate
    )
    
    $path = Resolve-Path -Path $Path;

    $word = New-Object -ComObject Word.Application;
    $doc = $word.Documents.Open($path);
    $selection = $word.Selection
    $Forward = $MatchWholeWord = $true;
    $Format = $MatchAllWordForms = $MatchCase = $MatchSoundsLike = $MatchWildcards = $Wrap = $false;

    $FindText = "%Version%";
    $ReplaceWith = [System.Version]::Parse($Version).ToString(3);

    $selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format,
            $ReplaceWith, [Microsoft.Office.Interop.Word.WdReplace]::wdReplaceAll);

    $FindText = "%ReleaseDate%";
    $ReplaceWith = [DateTime]::Today.ToString("MMMM yyyy");

    $selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format,
            $ReplaceWith, [Microsoft.Office.Interop.Word.WdReplace]::wdReplaceAll);
        
    $pdf = [System.IO.Path]::ChangeExtension($(Resolve-Path $Path), '.pdf');

    $doc.SaveAs($pdf, [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatPDF);
    $doc.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges);
    $word.Quit();
}

и призыв к нему:

UpdateDocumentation -Path '.\assureid-documentation\assureid-word-pdf-docs\assureid-sentinel\AssureID Sentinel Deployment Guide.docx' `
        -Version $Version -ReleaseDate [DateTime]::Today

Документ содержит этот текст: Version% VERSION%% RELEASEDATE%

1 Ответ

0 голосов
/ 03 августа 2020

У меня аналогичная проблема с некоторыми методами Excel. Можете ли вы попробовать не определять необязательные параметры, которые вам не нужны:

$selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $null, $null, $null, $null, $null, $null,
        $ReplaceWith, [Microsoft.Office.Interop.Word.WdReplace]::wdReplaceAll);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...