【问题标题】:Save excel as PDF in Specific (Dynamic) Location在特定(动态)位置将 Excel 保存为 PDF
【发布时间】:2022-02-23 23:50:49
【问题描述】:

我正在尝试创建将特定工作表从工作簿中保存并以 pdf 格式导出到特定位置的宏。目前我正在使用默认位置,它将文件保存在我电脑的文档文件夹中,但是当我发送电子邮件时,它将文件保存在用户最后使用的文件夹中。我想将文件保存到用户的 Documents 文件夹中。

Sub ExportAsPDF()
     
    Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF
   
MsgBox "All PDF's have been successfully exported."

End Sub

【问题讨论】:

    标签: excel file path location pdf-generation


    【解决方案1】:
    Dim Path as string
    Dim output_filename as string
    
      
    
          Path = ThisWorkbook.Sheets("sheet1").Range("A1")
        output_filename = ThisWorkbook.Sheets("sheet1").Range("A2")
        
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Path & output_filename & ".pdf"
    

    您还可以将 Path 和 output_filename 替换为固定文本。

    您可以灵活地使用其中一个 objUser。属性

    Sub test2()
    'userinfo.vbs
    
    ' Usage:
    '       cscript //Nologo userinfo.vbs
    
    ' List User properties as displayed in ADUC
    
    On Error Resume Next
    Dim objSysInfo, objUser
    Set objSysInfo = CreateObject("ADSystemInfo")
    
    ' Currently logged in User
    Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
     ' or specific user:
     'Set objUser = GetObject("LDAP://CN=johndoe,OU=Users,DC=ss64,DC=com")
    
    ActiveWorkbook.Sheets("Sheet1").Range("A2").Value = "DN: " & objUser.distinguishedName
    ActiveWorkbook.Sheets("Sheet1").Range("A3").Value = ""
    ActiveWorkbook.Sheets("Sheet1").Range("A4").Value = "GENERAL"
    ActiveWorkbook.Sheets("Sheet1").Range("A5").Value = "First name: " & objUser.givenName
    'ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "First name: " & objUser.FirstName
    ActiveWorkbook.Sheets("Sheet1").Range("A6").Value = "Initials: " & objUser.initials
    ActiveWorkbook.Sheets("Sheet1").Range("A7").Value = "Last name: " & objUser.sn
    'ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "Last name: " & objUser.LastName
    ActiveWorkbook.Sheets("Sheet1").Range("A8").Value = "Display name: " & objUser.DisplayName
    'ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "Display name: " & objUser.FullName
    ActiveWorkbook.Sheets("Sheet1").Range("A9").Value = "Description: " & objUser.Description
    ActiveWorkbook.Sheets("Sheet1").Range("A10").Value = "Office: " & objUser.physicalDeliveryOfficeName
    ActiveWorkbook.Sheets("Sheet1").Range("A11").Value = "Telephone number: " & objUser.telephoneNumber
    ActiveWorkbook.Sheets("Sheet1").Range("A12").Value = "Other Telephone numbers: " & objUser.otherTelephone
    ActiveWorkbook.Sheets("Sheet1").Range("A13").Value = "Email: " & objUser.mail
    ' ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "Email: " & objUser.EmailAddress
    ActiveWorkbook.Sheets("Sheet1").Range("A14").Value = "Web page: " & objUser.wWWHomePage
    ActiveWorkbook.Sheets("Sheet1").Range("A15").Value = "Other Web pages: " & objUser.URL
    ActiveWorkbook.Sheets("Sheet1").Range("A16").Value = ""
    ActiveWorkbook.Sheets("Sheet1").Range("A17").Value = "ADDRESS"
    ActiveWorkbook.Sheets("Sheet1").Range("A18").Value = "Street: " & objUser.streetAddress
    ActiveWorkbook.Sheets("Sheet1").Range("A19").Value = "P.O. Box: " & objUser.postOfficeBox
    ActiveWorkbook.Sheets("Sheet1").Range("A20").Value = "City: " & objUser.l
    ActiveWorkbook.Sheets("Sheet1").Range("A21").Value = "State/province: " & objUser.st
    ActiveWorkbook.Sheets("Sheet1").Range("A22").Value = "Zip/Postal Code: " & objUser.postalCode
    ActiveWorkbook.Sheets("Sheet1").Range("A23").Value = "Country/region: " & objUser.countryCode
    'ActiveWorkbook.Sheets("Sheet1").Range("A4").Value =  "Country/region: " & objUser.c    '(ISO 4217)
    ActiveWorkbook.Sheets("Sheet1").Range("A24").Value = ""
    ActiveWorkbook.Sheets("Sheet1").Range("A25").Value = "ACCOUNT"
    ActiveWorkbook.Sheets("Sheet1").Range("A26").Value = "User logon name: " & objUser.userPrincipalName
    ActiveWorkbook.Sheets("Sheet1").Range("A27").Value = "pre-Windows 2000 logon name: " & objUser.sAMAccountName
    ActiveWorkbook.Sheets("Sheet1").Range("A28").Value = "AccountDisabled: " & objUser.AccountDisabled
    ' ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "Account Control #: " & objUser.userAccountControl
    ActiveWorkbook.Sheets("Sheet1").Range("A29").Value = "Logon Hours: " & objUser.logonHours
    ActiveWorkbook.Sheets("Sheet1").Range("A30").Value = "Logon On To (Logon Workstations): " & objUser.userWorkstations
    ' ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "User must change password at next logon: " & objUser.pwdLastSet
    ActiveWorkbook.Sheets("Sheet1").Range("A31").Value = "User cannot change password: " & objUser.userAccountControl
    ActiveWorkbook.Sheets("Sheet1").Range("A32").Value = "Password never expires: " & objUser.userAccountControl
    ActiveWorkbook.Sheets("Sheet1").Range("A33").Value = "Store password using reversible encryption: " & objUser.userAccountControl
    ' ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "Account expires end of (date): " & objUser.accountExpires
    ActiveWorkbook.Sheets("Sheet1").Range("A34").Value = ""
    ActiveWorkbook.Sheets("Sheet1").Range("A35").Value = "PROFILE"
    ActiveWorkbook.Sheets("Sheet1").Range("A36").Value = "Profile path: " & objUser.profilePath
    ' ActiveWorkbook.Sheets("Sheet1").Range("A5").Value =  "Profile path: " & objUser.Profile
    ActiveWorkbook.Sheets("Sheet1").Range("A37").Value = "Logon script: " & objUser.scriptPath
    ActiveWorkbook.Sheets("Sheet1").Range("A38").Value = "Home folder, local path: " & objUser.homeDirectory
    ActiveWorkbook.Sheets("Sheet1").Range("A39").Value = "Home folder, Connect, Drive: " & objUser.homeDrive
    ActiveWorkbook.Sheets("Sheet1").Range("A40").Value = "Home folder, Connect, To:: " & objUser.homeDirectory
    ActiveWorkbook.Sheets("Sheet1").Range("A41").Value = ""
    ActiveWorkbook.Sheets("Sheet1").Range("A42").Value = "TELEPHONE"
    ActiveWorkbook.Sheets("Sheet1").Range("A43").Value = "Home: " & objUser.homePhone
    ActiveWorkbook.Sheets("Sheet1").Range("A44").Value = "Other Home phone numbers: " & objUser.otherHomePhone
    ActiveWorkbook.Sheets("Sheet1").Range("A45").Value = "Pager: " & objUser.pager
    ActiveWorkbook.Sheets("Sheet1").Range("A46").Value = "Other Pager numbers: " & objUser.otherPager
    ActiveWorkbook.Sheets("Sheet1").Range("A47").Value = "Mobile: " & objUser.mobile
    ActiveWorkbook.Sheets("Sheet1").Range("A48").Value = "Other Mobile numbers: " & objUser.otherMobile
    ActiveWorkbook.Sheets("Sheet1").Range("A49").Value = "Fax: " & objUser.facsimileTelephoneNumber
    ActiveWorkbook.Sheets("Sheet1").Range("A50").Value = "Other Fax numbers: " & objUser.otherFacsimileTelephoneNumber
    ActiveWorkbook.Sheets("Sheet1").Range("A51").Value = "IP phone: " & objUser.ipPhone
    ActiveWorkbook.Sheets("Sheet1").Range("A52").Value = "Other IP phone numbers: " & objUser.otherIpPhone
    ActiveWorkbook.Sheets("Sheet1").Range("A53").Value = "Notes: " & objUser.info
    ActiveWorkbook.Sheets("Sheet1").Range("A54").Value = ""
    ActiveWorkbook.Sheets("Sheet1").Range("A55").Value = "ORGANISATION"
    ActiveWorkbook.Sheets("Sheet1").Range("A56").Value = "Title: " & objUser.Title
    ActiveWorkbook.Sheets("Sheet1").Range("A57").Value = "Department: " & objUser.department
    ActiveWorkbook.Sheets("Sheet1").Range("A58").Value = "Company: " & objUser.company
    ActiveWorkbook.Sheets("Sheet1").Range("A59").Value = "Manager: " & objUser.manager
    End Sub
    

    【讨论】:

    • 建议的代码有两个挑战。 1.文件将通过电子邮件共享,地址无法固定。就像它将是(用户)/文档。 2. 我尝试了相同的代码,但收到错误文档未保存。文档可能已打开,或者保存时可能遇到错误。
    • 也许您可以使用广告代码?请参阅stackoverflow.com/questions/21110232/…,然后您可以从打开文件的用户那里检索用户名和电子邮件。然后在字符串中使用这个用户名作为路径。
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2020-06-14
    • 1970-01-01
    • 2017-08-31
    • 2018-08-22
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多