У меня есть требование получить последний созданный файл .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]
Любые предложения высоко ценятся