我正在使用下面提到的代码来打印一张纸。我的任务已经完成,但是我收到错误消息,指出“运行时错误'-2147024773(8007007b)':文档未保存。”
还可以在下面的代码中向文件名添加文本(单元格A1文本除外)。我希望将文件名命名为A1单元格上的名称,并在末尾添加文本“-Workpaper”。
有人可以帮忙吗?
Sub PrintFile()
With ActiveSheet
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Foldername\" & Range("A1").Text, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
End Sub
答案 0 :(得分:1)
尝试将“ Range(“ A1”)。Text“更改为” Range(“ A1”)。Value“ Text vs Value
此外,在使用该值之前,您应该检查有效的文件名。
Function ValidateFileName(ByVal name As String) As Boolean
' Check for nothing in filename.
If name Is Nothing Then
ValidateFileName = False
End If
' Determines if there are bad characters.
For Each badChar As Char In System.IO.Path.GetInvalidPathChars
If InStr(name, badChar) > 0 Then
ValidateFileName = False
End If
Next
' If Name passes all above tests Return True.
ValidateFileName = True
End Function
答案 1 :(得分:1)
首先输入例如“测试”到A1单元格-文件名可能有问题。您还可以使用Excel的数据验证或某些VBA代码来清理文件名。您还可以添加一些检查目录是否存在,以确保它不是问题。
Sub PrintFile()
' check if folder exists
If Dir("C:\Foldername\", vbDirectory) = "" Then
MkDir "C:\Foldername\"
End If
' check if name in A1 is not blank
If IsEmpty(Range("A1")) Then
MsgBox "Fill A1 Cell with name of the pdf file first"
Else
With ActiveSheet
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\Foldername\" & Range("A1").Value & "- Workpaper", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End With
End If
End Sub
因此,您的路径或/和文件名存在问题。也许是Mac,C:\不是正确的地址?
答案 2 :(得分:0)
此错误的原因可能是权限不足或文件名中的任何无效字符。
您能否尝试将其保存在与C不同的驱动器中,看看是否可行?
将代码的这一行替换为下面的行,以在文件名的末尾添加-Workpaper。
假设您要将此文件保存在D盘的临时文件夹中。
Filename:="D:\temp\" & Range("A1").Text & "-Workpaper", _