【发布时间】:2019-06-17 00:39:25
【问题描述】:
我正在尝试将工作表作为 PDF 文件保存到桌面,然后使用 CopyFile 方法将文件复制到另一个位置。
我收到错误
“找不到文件”
或
“找不到路径”
当使用CopyFile 方法时,它会在桌面上创建一个文件,然后在复制文件时抛出错误。
在此之前,我尝试创建 pdf 两次,一个接一个,它在桌面上创建并在相关的每月文件夹中创建另一个。
我尝试了关于这两个变量的不同语法。
Sub Save_Invoice_To_PDF()
Dim Fso As Scripting.FileSystemObject
Dim Invoice As Worksheet
Dim Fname As String
Dim Path1 As String
Dim Path2 As String
Dim PndSign As String
Dim Mth As String
Dim Mth1 As String
Set Invoice = Sheet1
PndSign = Chr(163)
Mth = Invoice.Range("A16").Value
Mth1 = MonthName(Month(Mth))
Path1 = "C:\Users\Peter\Desktop\"
Path2 = "C:\Users\Peter\Documents\Business\Sent Invoices\" & Mth1 & "\"
Fname = Range("C16").Value & " " & Range("A8").Value & " " & _
PndSign & "" & Range("E46").Value _
& " " & Format(Range("A16"), "dd-mm-yyyy") & ".pdf"
Application.ScreenUpdating = False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Path1 & " " & Fname, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Set Fso = New FileSystemObject
Fso.CopyFile Source:="C:\Users\Peter\Desktop\" & Fname, _
Destination:="C:\Users\Peter\Business\Invoices\Sent Invoices\ _
" & Mth1 & "\"
Set Fso = Nothing
Application.ScreenUpdating = True
End Sub
我想将一个 pdf 保存到桌面并将该 pdf 复制到在 Mth1 变量中指定的每月文件夹,该变量部分来自文件 Fname 变量,即 Format(Range("A16"), "dd-mm-yyyy")。
【问题讨论】:
-
.CopyFile 代码无法编译,因为 _ 字符串已损坏?请发布真实代码。注意 Mth1 目录必须存在,它不会被创建。有一个内置的 FileCopy() 函数,因此您可以删除不必要的 FSO 代码。
-
在您尝试将文件复制到其中时,
"C:\Users\Peter\Business\Invoices\Sent Invoices\ _ " & Mth1 & "\"是否存在?如果没有,我相当肯定.CopyFile会失败。如果目录不存在,您将必须创建。 -
另外,
"C:\Users\Peter\Business\Invoices\Sent Invoices\ _ " & Mth1 & "\"在实际路径中使用“_”可能根本无效。如果您尝试使用_进行续行,则需要将其在 引用的字符串之外。在您的FSO.CopyFile行中,您可以使用Destination:=Path2来避免拼写错误,特别是因为您声明了Path2并且没有以其他方式使用它。
标签: excel vba excel-2007