【问题标题】:Save to PDF loop not working保存到 PDF 循环不起作用
【发布时间】:2016-06-06 20:28:30
【问题描述】:

解决了。

宏循环遍历表格并将值自动填充到目标工作表中,并自动在桌面上另存为 pdf,并为每一行指定文件名。它不会将它们保存到单个 pdf 中;但是,如果您有 adobe acrobat,它有一个简单的合并工具可以将它们组合在一起。

  Sub AutoFill_export2pdf()
'

Dim rowCount As Integer
Dim CurBU As String
Dim CurOPRID As String
Dim CurName As String
Dim CurJournalID As String
Dim CurJournalDate As String
Dim FILE_NAME As String

 Sheets("List").Select

rowCount = ActiveSheet.UsedRange.Rows.count

Set Destsh = ActiveWorkbook.Sheets("Sheet")

For sourceRow = 2 To rowCount

CurOPRID = Range("A" & CStr(sourceRow)) 'OPRID
CurName = Range("B" & CStr(sourceRow)) 'Name
CurBU = Range("C" & CStr(sourceRow)) 'BU
CurJournalID = Range("D" & CStr(sourceRow)) 'Journal ID
CurJournalDate = Range("E" & CStr(sourceRow)) 'Journal Date

FILE_NAME = ActiveWorkbook.Path & "\" & "OTGL_" & "JRNL_" & CurBU & "_" &     CurJournalID & "_" & Format(CurJournalDate, "mm-dd-yyyy") & "_" & ".PDF"
CurName = "*" & CurName & "*"
CurBU = "*" & CurBU & "*"
CurJournalID = "*" & CurJournalID & "*"
CurJournalDate = "*" & CurJournalDate & "*"

Destsh.Range("K27") = CurName
Destsh.Range("D7") = CurBU
Destsh.Range("G7") = CurJournalID
Destsh.Range("I7") = CurJournalDate

On Error GoTo 0

Call SaveAsPDF(Destsh, FILE_NAME)

Sheets("List").Select

Next

End Sub


Public Sub SaveAsPDF(ByVal destSheet As Worksheet, ByVal PDFName As String)


On Error Resume Next
Kill PDFName

destSheet.Activate

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
        PDFName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False,   OpenAfterPublish:=False

End Sub


Sub Autofill()
'

Dim rowCount As Integer
Dim CurBU As String
Dim CurName As String
Dim CurOPRID As String
Dim CurJournalID As String
Dim CurJournalDate As String
Dim FILE_NAME As String

CurName = "*" & CurName & "*"
CurBU = "*" & CurBU & "*"
CurJournalID = "*" & CurJournalID & "*"
CurJournalDate = "*" & CurJournalDate & "*"

Sheets("List").Select

rowCount = ActiveSheet.UsedRange.Rows.count

Set Destsh = ActiveWorkbook.Sheets("Sheet")

For sourceRow = 2 To rowCount

CurOPRID = Range("A" & CStr(sourceRow)) 'OPRID
CurName = Range("B" & CStr(sourceRow)) 'Name
CurBU = Range("C" & CStr(sourceRow)) 'BU
CurJournalID = Range("D" & CStr(sourceRow)) 'Journal ID
CurJournalDate = Range("E" & CStr(sourceRow)) 'Journal Date

FILE_NAME = ActiveWorkbook.Path & "\" & "OTGL_" & "JRNL_" & CurBU & "_" &    CurJournalID & "_" & Format(CurJournalDate, "mm-dd-yyyy") & "_" & ".PDF"

Destsh.Range("K27") = CurName
Destsh.Range("D7") = CurBU
Destsh.Range("G7") = CurJournalID
Destsh.Range("I7") = CurJournalDate

On Error GoTo 0

Call SaveAsPDF(Destsh, FILE_NAME)



Sheets("List").Select



Next


End Sub


End Sub

【问题讨论】:

  • saves the entire workbook in pdf-which is great but I only need sheet 1 然后你做Set wb = ActiveWorkbook | wb.ExportAsFixedFormat Type:=xlTypePDF XD
  • 你能否详细说明那条线和我的线之间的区别……它们在我看来是一样的。
  • 我写了then you do,意思是我在说明你做了什么......所以没有区别。
  • 我的意思是当你说你有tried about thirty ways to Sunday时,我怀疑你的说法的真实性。我的猜测是你用谷歌搜索了这段代码,根本没有费心去研究它。编辑:在有人再次称我粗鲁之前大声笑XD然而,总是OP强迫我直言不讳-_- Edit2:我想我可以闭嘴XD
  • 我在当前脚本和其他脚本之前遇到过这个错误。我知道代码的含义,并且我已经完成了消除错误的过程。我在这里寻求帮助...这是一个论坛,人们在这里讨论想法并解决问题。如果该主题之前已触及,则有许多不同的解决方案使每个问题都独一无二 - 如果您可以在论坛中找到我的问题的答案,请链接它以便我继续前进。所以,是的,我已经完成了我的研究,但并没有带来什么好处。当人们只是在寻求帮助时,无需打电话给他们。

标签: vba excel pdf


【解决方案1】:

您只想导出目标表 (Destsh)。所以使用

Destsh.ExportAsFixedFormat Type:=xlTypePDF, _
               filename:="fp", _
               Quality:=xlQualityStandard, _
               IncludeDocProperties:=True, _
               IgnorePrintAreas:=False, _
               OpenAfterPublish:=False

代替

wb.ExportAsFixedFormat Type:=xlTypePDF, _
               filename:="fp", _
               Quality:=xlQualityStandard, _
               IncludeDocProperties:=True, _
               IgnorePrintAreas:=False, _
               OpenAfterPublish:=False

这只会将文件保存到您想要使用的“fp”中

filename:= fp & "\mysheetname.pdf"

【讨论】:

  • awww yeaaaa 必须让你达到 2k^^
  • 我收到运行时错误'-214701887 文档未保存...建议??
  • 然后编辑您的原始问题以显示您更新的代码。所以我可以看到。我的猜测是你的文件路径没有正确构建。
  • 正如我在帖子中提到的,您仍然没有引用变量 fp(而是将文字字符串 fp 传递给文件路径。但这不会导致您在评论中引用的错误。
猜你喜欢
  • 2015-12-28
  • 1970-01-01
  • 2012-04-02
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
相关资源
最近更新 更多