Это немного сложно, так как вы должны установить ключи реестра.
Предполагая, что у вас есть полная версия Adobe Acrobat, в которой установлены исходные ключи реестра:
Во-первых, у вас есть функции доступа к реестру, которые вы вставили в не листовой модуль:
Private Const HKEY_CURRENT_USER As Long = &H80000001
Private Const HKCU = HKEY_CURRENT_USER
Private Const KEY_SET_VALUE = &H2&
Private Const REG_SZ = 1
Private Declare Function RegOpenKeyEx Lib "advapi32" _
Alias "RegOpenKeyExA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long
Private Declare Function RegSetValueExA Lib "ADVAPI32.DLL" _
(ByVal hKey As Long, _
ByVal sValueName As String, _
ByVal dwReserved As Long, _
ByVal dwType As Long, _
ByVal sValue As String, _
ByVal dwSize As Long) As Long
Private Declare Function RegCloseKey Lib "ADVAPI32.DLL" ( _
ByVal hKey As Long) As Long
Затем вы используете следующий код для установки ключа реестра, который сообщает Adobe, где сохранить файл. Обратите внимание, что он должен быть установлен каждый раз, когда вы печатаете.
Dim RegResult As Long, Result As Long
RegResult = RegOpenKeyEx(HKCU, "Software\Adobe\Acrobat Distiller\PrinterJobControl", _
0&, KEY_SET_VALUE, Result)
RegResult = RegSetValueExA(Result, "C:\Windows\splwow64.exe", 0&, REG_SZ, _
FileName, Len(FileName))
RegResult = RegCloseKey(Result)
Также обратите внимание, что «C: \ Windows \ splwow64.exe» - это то, что мне нужно для моего 32-разрядного Excel 2010, и оно может отличаться для вас. Чтобы определить его (который не изменится), сначала напечатайте вручную в PDF, затем перейдите в раздел реестра и посмотрите, какое приложение используется в ключе HKCU \ Software \ Adobe \ Acrobat Distiller \ PrinterJobControl LastPDFPortFolder. Затем используйте имя полного пути приложения для этого исполняемого файла.