您好,我只是试图使用Microsoft Access和PowerShell中的插件(命令合并PDF)合并不同的PDF文件基于复选框。我想如果他们被选中,采取他们并通过单击一个按钮将它们合并到一个PDF文档。我只是有usign另一个按钮来打开所有选中的文档,但我也想合并这些选定的文档。
我尝试了一些东西,但它不起作用。
我测试的VBS看起来像:
Function MergeSelectedPDF()
' Declare variables
Dim PowerShellCmd As String
Dim selectedPDFs As String
Dim shellCommand As String
Dim shellResult As Variant
' Initialize selectedPDFs variable
selectedPDFs = ""
' Loop through your records and build a string with selected PDF file paths
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Tabulka1")
Do While Not rs.EOF
If rs![Marker] = True Then
' Separate file paths with spaces
selectedPDFs = selectedPDFs & " " & rs![Odkaz]
End If
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
' Construct the PowerShell command
PowerShellCmd = selectedPDFs & " | Merge-Pdf -OutputPath ""C:\Merged.pdf"""
' Execute the PowerShell command
shellCommand = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -Command " & PowerShellCmd
shellResult = Shell(shellCommand, vbNormalFocus)
' Check if an error occurred during execution
If shellResult = 0 Then
MsgBox "Error executing PowerShell command.", vbExclamation
End If
End Function
字符串
1条答案
按热度按时间ozxc1zmp1#
您正在尝试写入根文件夹(加上许多其他shell问题,例如命令行有长度限制,因此命令行的结尾将被切断,因此您在硬盘驱动器的根处发射了一个加载的大炮。
字符串
这是不允许的(除非你不明智地保护它)。
的数据
使用测试文件夹(如C:\test),然后写入该子文件夹,确保在必要时将用户写入设置为权限。
也要确保您的权限设置正确的PowerShell模块安装时.有更简单的方法来合并文件没有PowerShell的限制,通过使用一个命令行在 shell 中与一个单一的exe,如PDFcpu https://pdfcpu.io/core/merge和许多其他像GhostScript,cpdf,qpdf,poppler pdfunite等.(最快的可能是https://mupdf.readthedocs.io/en/latest/mutool-merge.html)
保持文件的数量非常少,因为路径的字符串长度限制很快就会生效。因此,只需编写一个文件名的文本列表,并将列表或短名称传递给合并命令。
这个例子在powershell中使用了数值方法,而不是外部化的,但是虽然它适用于数百个,但它不是最有效的https://stackoverflow.com/a/75524955/10802527。有效的是使用shell和批处理文件。
因此,这里使用GhostScript与命令或文件https://stackoverflow.com/a/75486958/10802527的文本文件