我想将Excel文件作为.pdf文件保存到特定位置,然后通过邮件发送该文件。
我正在使用Office 2000:|
到目前为止,这是我的代码:
Application.ActivePrinter = "PDF995 on Ne00:"
ActiveSheet.PageSetup.PrintArea = Range("A68").Value
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"PDF995 on Ne00:", Collate:=True
Set WB = ActiveWorkbook
Set oApp = CreateObject("Outlook.Application")
Set omail = oApp.Createitem(0)
With omail
.To = Range("B61").Value
.Subject = "Approved"
.Body
.Display
Rows("81:134").Select
Selection.EntireRow.Hidden = True
End With
我可以轻松保存文件并将其邮寄,但我无法将其保存到特定位置。
我需要能够像“C:\ path \ file.pdf”这样的路径。
答案 0 :(得分:0)
如果您将文件保存到固定位置但是您无法选择在哪里,作为最后的手段,您可以随时使用fso的MoveFile将其移动到指定位置
例如。如果文件始终保存为“C:\ temp \ file1.pdf”,并且您希望它在桌面上
'Initialise first'
set fso = CreateObject("Scripting.FileSystemObject")
...
'After procedure'
desired_destination = "c:\windows\desktop\"
target_file = "C:\temp\file1.pdf"
fso.MoveFile target_file, desired_destination
如果要检查现有文件冲突(我相信fso的Move不允许覆盖),请使用CopyFile并打开覆盖,然后在必要时删除源文件
如果您想使用文件对话框来选择目的地,您可以使用UserAccounts.CommonDialog对象(虽然这不适用于Vista)或SAFRCFileDlg.FileOpen(几乎仅适用于XP)或借用IE提示框。 (不幸的是,据我所知,VBS的选项并不是那么好)
答案 1 :(得分:0)
这有点复杂,因为您必须设置注册表项。 假设您有安装了初始注册表项的完整版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”是我的Excel 2010 32位所需要的,它可能与您不同。要确定它(不会更改),首先手动打印到PDF,然后转到注册表项,查看HKCU \ Software \ Adobe \ Acrobat Distiller \ PrinterJobControl LastPDFPortFolder键中使用的应用程序。然后使用该可执行文件的完整应用程序路径的名称。
答案 2 :(得分:0)
试试这个:
sName = "C:\path\file.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sName