打印宏-问题

时间:2018-09-17 14:17:28

标签: excel vba excel-vba

我正在使用下面提到的代码来打印一张纸。我的任务已经完成,但是我收到错误消息,指出“运行时错误'-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

3 个答案:

答案 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", _