Из кода VBA в Access 2013 Я пытаюсь запустить сценарий PowerShell, который принимает 1 параметр. Этот параметр предоставляется (и устанавливается) из Access (VBA).Предоставление параметра от VBA до Powershell
Хотя я заметил, что сценарий не был правильно пропущен правильным путем. Он запускает приложение, которое объединяет некоторые файлы PDF. Приведенный параметр позволяет приложению узнать, какая папка, содержащая файлы PDF, должна сливаться.
Этот параметр, однако, не был учтен.
Мой VBA скрипт это следующим образом:
Err = Shell("powershell.exe -ExecutionPolicy Unrestricted -File G:\OPSPDF\MergeFiles.ps1 -path """ & MergedFolder & """ ", 1)
Параметр MergedFolder представляет собой строку путь к папке, которая содержит PDF файлы для слияния ("O:\documents\somefiles")
Мой PowerShell скрипт выглядит следующим образом:
param([String] $inputfolder)
$PDFtk = "D:\Test\pdftk.exe"
$outputfile = "MergedFile.pdf"
dir $inputfolder -r -include *.pdf -exclude $outputfile | group DirectoryName |
% {& $PDFtk $_.group CAT OUTPUT "$($_.Name)\$outputfile"}
cmd /c pause | out-null
PDFtk
- это место, где должно быть запущено exe
. Пауза встроена, чтобы понять, что происходит не так.
Потому что оно не работает правильно, я try'd повторить мой заданный параметр из VBA в сценарии Powershell так:
param([String] $inputfolder)
echo $inputfolder
$PDFtk = "D:\Test\pdftk.exe"
$outputfile = "MergedFile.pdf"
dir $inputfolder -r -include *.pdf -exclude $outputfile | group DirectoryName |
% {& $PDFtk $_.group CAT OUTPUT "$($_.Name)\$outputfile"}
cmd /c pause | out-null
Тхо ничего не echo'd так, что заставил меня поверить, что, возможно, там происходит что-то не так с переменной в VBA, заданного в качестве параметра (это содержит некоторые специальные символы, такие как \
), поэтому я заменил переменную MergedFolder
для жесткого кодированной строки, как это:
Err = Shell("powershell.exe -ExecutionPolicy Unrestricted -File G:\OPSPDF\MergeFiles.ps1 -path "" TestString "" ", 1)
Но все-таки это не ес хо что-нибудь ... Что я здесь делаю неправильно?
Собственно интерес, если вы вставите ту же самую команду в диалог RUN вы получите тот же результат, или же он работает? –