问题肯定是双反斜杠

问题肯定是双反斜杠

在之前的帖子中,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

正确地遵循道路。

一个有趣的点是,你可以将其用作用户文档文件夹的快捷方式

相关内容