从Access 2013中的VBA代码我尝试运行一个接受1个参数的PowerShell脚本。从Access(VBA)中提供(和设置)此参数。
虽然我注意到剧本并没有以正确的方式进行。它运行一个应用程序,将一些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
应该启动的位置。暂停是为了看看出了什么问题。
因为它没有正常工作,我尝试在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
没有任何东西被回应,所以这让我相信可能在VBA中作为参数给出的变量有问题(这包含一些特殊字符,如\
)所以我替换了{{ 1}}一个硬编码字符串的变量,如下所示:
MergedFolder
但它仍然没有回应任何事情......我在这里做错了什么?
答案 0 :(得分:0)
您的脚本中有inputputfolder
参数($inputfolder
),但您在VBA代码中传递了-path
参数。
尝试删除测试字符串周围的引号:
Err = Shell("powershell.exe -ExecutionPolicy Unrestricted -File G:\OPSPDF\MergeFiles.ps1 -inputfolder TestString", 1)