我正在尝试使用 Access 2007 VBA 合并 2 个 pdf 文件,我已检查所有文件都位于正确的位置,但当我进行合并时,PDFTK 找不到输入文件。如有任何帮助或建议,我将不胜感激。
我已经复制了我的 vba 代码如下
Reportstring = ""
Reportstring = Environ("userprofile") & "\Documents\Datafiles\BatleyHousingSurveys\BookletinputFiles\1_BookletFrontPage.pdf" & " "
Reportstring = Reportstring & Environ("userprofile") & "\Documents\Datafiles\BatleyHousingSurveys\BookletinputFiles\2_BookletContentsPage.pdf" & " "
Reportstring = Reportstring + "Cat Output " + Environ("userprofile") & "\Documents\Datafiles\BatleyHousingSurveys\BookletinputFiles\HousingBooklet.pdf"
Shell (Environ("programfiles") & "\PDFtk Server\bin\PDFTK.exe " + Reportstring), 3
为什么它说找不到文件?
答案1
PDFTK 可执行文件的路径中有空格。
您希望命令看起来如下:
- 可执行文件:
C:\Program Files\PDFtk Server\bin\pdftk.exe
- 论点:(
C:\Users\user\Documents\Datafiles\...
不会粘贴整个内容)
以下是系统实际看到的内容:
- 可执行文件:
C:\Program
- 参数:
Files\PDFtk Server\bin\pdftk.exe C:\Users\user\Documents\Datafiles\...
当然,没有这样的可执行文件C:\Program
,所以这就是您收到的错误。
您需要将可执行文件名称放在引号 ( "
) 中,以防止空格引起问题。(出于习惯和良好做法,您还应该将文件名放在引号中。)
我可能会这样编写此代码(分成更多行,以便于阅读和将来修改):
DblQuote = """" ' This is a single (") character
BaseFilePath = Environ("userprofile") & "\Documents\Datafiles\BatleyHousingSurveys\BookletinputFiles\"
FirstFilePath = DblQuote & BaseFilePath & "1_BookletFrontPage.pdf" & DblQuote
SecondFilePath = DblQuote & BaseFilePath & "2_BookletContentsPage.pdf" & DblQuote
Operations = "cat output"
OutputFilePath = DblQuote & BaseFilePath & "HousingBooklet.pdf" & DblQuote
ArgumentString = FirstFilePath & " " & SecondFilePath & " " & Operations & " " & OutputFilePath
ExecutablePath = DblQuote & Environ("programfiles") & "\PDFtk Server\bin\PDFTK.exe" & DblQuote
Shell (ExecutablePath & " " & ArgumentString), 3