使用 PowerShell 打开带有参数的 Excel 文件

Open Excel file with parameter using PowerShell

我需要从特定文件夹中获取最后创建的 .xlsm 文件。我设法使用以下 powershell 代码实现了它:

$dir = "\test\folder1\"
$latest = Get-ChildItem -Path $dir *.xlsm | Sort-Object CreationTime -Descending | Select-Object -First 1
$filePath = $dir + $latest

获得文件后,我需要启动 excel 文件并将参数传递给它。过去,不需要最后创建的文件(它使用一个主文件)所以我曾经 运行 一个看起来像这样的批处理文件:

start excel "\test\folder\file.xlsm" /e/TestEnv

然后在 VBA 中使用以下代码,我能够在执行 Workbook_Open() 时获取参数:

Function CmdToSTr(Cmd As Long) As String
    Dim Buffer() As Byte
    Dim StrLen As Long

    If Cmd Then
        StrLen = lstrlenW(Cmd) * 2

        If StrLen Then
            ReDim Buffer(0 To (StrLen - 1)) As Byte
            CopyMemory Buffer(0), ByVal Cmd, StrLen
            CmdToSTr = Buffer
        End If
    End If
End Function

我试过调用许多不同的 powershell 启动方法,其中 none 似乎包含在其末尾传递的参数,包括

Start-Process -FilePath $filePath -ArgumentList "/TestEnv"


$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open($filePath)[TestEnv]

非常感谢任何建议

$dir = "\path"
$latest = Get-ChildItem -Path $dir *.xlsm | Sort-Object CreationTime -Descending | Select-Object -First 1
$filePath = $dir + $latest
start excel "`"$filepath`"/TestEnv"

这解决了我的问题