使用PowerShell使用参数打开Excel文件

时间:2018-12-07 16:18:56

标签: excel vba excel-vba powershell xlsm

我需要从特定文件夹中获取最后创建的.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启动方法,但似乎没有一个方法包含在末尾传递的参数,包括

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


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

任何建议都值得赞赏

1 个答案:

答案 0 :(得分:0)

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

这解决了我的问题