首页 > 解决方案 > Excel VBA 使用 Range.ExportAsFixedFormat 自动打印文件名和位置

问题描述

https://www.contextures.com/excelvbapdf.html 以下是完美的,但它会打印整个工作表。

全线程

  Sub PDFActiveSheet()
'www.contextures.com
'for Excel 2010 and later
Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
On Error GoTo errHandler

Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "yyyymmdd\_hhmm")

'get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'create default name for savng file
strFile = strName & "_" & strTime & ".pdf"
strPathFile = strPath & strFile

'use can enter name and
' select folder for file
myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strPathFile, _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

'export to PDF if a folder was selected
If myFile <> "False" Then
    wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    'confirmation message with file info
    MsgBox "PDF file has been created: " _
      & vbCrLf _
      & myFile
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub

但我遇到了麻烦

'export to PDF if a folder was selected
    If myFile <> "False" Then
  ` wsA.ExportAsFixedFormat 
        Type:=xlTypePDF, 
        Filename:=myFile, 
        Quality:=xlQualityStandard, 
        IncludeDocProperties:=True, 
        IgnorePrintAreas:=False, 
        OpenAfterPublish:=False` 

我想要完成的唯一一件事是打印一个范围(最好命名)来代替整个工作表。我创建了 dims 并设置了一个范围来代替“wsA”工作表,它很麻烦。

Dim rnG As Range
Set rnG = Range("Y1:AG46")
rnG.ExportAsFixedFormat _

是我添加的唯一行。它会按我的意愿工作,但间歇性地工作,我不知道为什么。它以黄色显示整个 ExportFileAsFixedFormat 子文本,并指出无法识别指定的 Range。

标签: excelvbaprinting

解决方案


我怀疑这是因为您没有限定范围。尝试

Set rnG = wsA.Range("Y1:AG46")

没有限定仅当wsA是活动工作表时才能正常工作。


推荐阅读