【问题标题】:How to pass a missing optional parameter to a VBA method from PowerShell如何从 PowerShell 将缺少的可选参数传递给 VBA 方法
【发布时间】:2014-03-03 08:14:57
【问题描述】:

我有一个 Word (Office 2013) 文档,我需要将文档的每一页拆分为单独的 PDF。因此,我使用 PowerShell 将其组合在一起。

$Word = New-Object -ComObject Word.Application
$Word.Visible = $true

$Doc = $Word.Documents.Open($SourceFile)

for ($pageNo = 1; $pageNo -le 50; $pageNo++)
{
    $OutputFile = $OutputDirectory + "\MyFile_" + $pageNo + ".pdf"

    $Doc.ExportAsFixedFormat($OutputFile, [Microsoft.Office.Interop.Word.WdExportFormat]::wdExportFormatPDF, $false, [Microsoft.Office.Interop.Word.WdExportOptimizeFor]::wdExportOptimizeForPrint, [Microsoft.Office.Interop.Word.WdExportRange]::wdExportFromTo, $pageNo, $pageNo, [Microsoft.Office.Interop.Word.WdExportItem]::wdExportDocumentContent, $false, $false, [Microsoft.Office.Interop.Word.WdExportCreateBookmarks]::wdExportCreateNoBookmarks, $false, $true, $false, $null)
}

$Doc.Close()    
$Word.Quit()

我已经做到了最后一个参数,它期望这是对this的引用。

[ref] System.Object FixedFormatExtClassPtr

我尝试传入 $null, 0,每个都带有或不带有 [ref],但我收到此错误:

参数:“15”应该是 System.Management.Automation.PSReference。 使用[参考]。

关于我需要为最后一个参数传递什么的任何想法?或者,有没有更简单的方法来完成这项任务?

【问题讨论】:

    标签: vba powershell ms-word


    【解决方案1】:

    我刚刚发现我做错了什么。对于最后一个参数,我需要使用 System.Type.Missing。

    $Word = New-Object -ComObject Word.Application
    $Word.Visible = $true
    
    $Doc = $Word.Documents.Open($SourceFile)
    $fixedFromatExtClassPtr = [System.Type]::Missing
    
    for ($pageNo = 1; $pageNo -le 50; $pageNo++)
    {
        $OutputFile = $OutputDirectory + "\MyFile_" + $pageNo + ".pdf"
    
        $Doc.ExportAsFixedFormat($OutputFile, [Microsoft.Office.Interop.Word.WdExportFormat]::wdExportFormatPDF, $false, [Microsoft.Office.Interop.Word.WdExportOptimizeFor]::wdExportOptimizeForPrint, [Microsoft.Office.Interop.Word.WdExportRange]::wdExportFromTo, $pageNo, $pageNo, [Microsoft.Office.Interop.Word.WdExportItem]::wdExportDocumentContent, $false, $false, [Microsoft.Office.Interop.Word.WdExportCreateBookmarks]::wdExportCreateNoBookmarks, $false, $true, $false, [ref]$fixedFromatExtClassPtr)
    }
    
    $Doc.Close()    
    $Word.Quit()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 2016-02-17
      • 1970-01-01
      相关资源
      最近更新 更多