我需要从特定文件夹中获取最后创建的.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]
任何建议都值得赞赏
答案 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"
这解决了我的问题