使用 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"
这解决了我的问题
我需要从特定文件夹中获取最后创建的 .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"
这解决了我的问题