在之前的帖子中,SE'er harrymc 建议在我的代码中添加此行,以便用户可以命名文件,但目录保存路径是固定的。
strfile = "C:\mypath\Selection_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"
我合并了上述代码,但保存目录仍然默认为 \This PC\Documents。
我花了几个小时阅读各种 SE 和其他 VBA 论坛,但还没有找到解决方案。非常感谢您的专业知识。
Sub PrintSelectionToPDF()
'SUBROUTINE: PrintSelectionToPDF
'DEVELOPER: Ryan Wells
'DESCRIPTION: Print your currently selected range to a PDF
Dim ThisRng As Range
Dim strfile As String
Dim myfile As Variant
If Selection.Count = 1 Then
Set ThisRng = Application.InputBox("Select a range", "Get Range", Type:=8)
Else
Set ThisRng = Selection
End If
'Prompt for save location
strfile = "C:\Users\DJB Laptop\OneDrive .....\_Qualtrics\_2019-2020\2019-20 2nd Semester\Quant PDF Dump\\Selection_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"
'"C:\Users\DJB Laptop\OneDrive - Albany County School District One\_Qualtrics\_2019-2020\2019-20 2nd Semester\Quant PDF Dump\" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf" _
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Select Folder and File Name to Save as PDF")
If myfile <> "False" Then 'save as PDF
ThisRng.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
myfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "No File Selected. PDF will not be saved", vbOKOnly, "No File Selected"
End If
End Sub
答案1
我不想承认,但我不得不承认...我正在变成一只恐龙。
在我那个年代,我们不得不在三英尺深的雪地里上下坡编码!但现在的孩子,他们可以轻松地在代码中使用所有这些新奇的 wizkaboodles,它们会执行我不明白的事情。我甚至无法理解文件路径了。就我而言,我不明白这将如何工作:
"C:\Users\DJB Laptop\OneDrive .....\_Qualtrics\_2019-2020\2019-20 2nd Semester\Quant PDF Dump\\Selection_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"
如何使用省略号.....
而不将其替换为扩展路径?
两个反斜杠起什么作用\\
?
如果你能教我这些东西那么我也许可以帮助你。
收到关于省略号的评论,但没有收到关于双反斜杠的评论,所以看来我的观点在一个老人漫无边际的胡言乱语中迷失了。明确地说:
问题肯定是双反斜杠
Windows 通常会忽略双反斜杠,例如在 cmd.exe 窗口中使用它们没有效果;但我已经测试并确认\\
在 VBA 中不会使用此代码忽略它:
Application.GetSaveAsFilename "C:\Test\\Fail.xlsx
打开当前用户的文档窗口。
Application.GetSaveAsFilename "C:\Test\Success.xlsx
正确地遵循道路。
一个有趣的点是,你可以将其用作用户文档文件夹的快捷方式