【问题标题】:VBA to Create PDF for excel sheets based on criteriaVBA根据标准为Excel工作表创建PDF
【发布时间】:2016-03-03 23:02:42
【问题描述】:

所以我有一个仪表板报告,它根据我从另一张表(名称键)中的下拉选择显示销售业绩。在单元格“B266”中包含当月的总销售额。我正在开发一个 VBA,它将创建 PDF 报告并在满足以下条件时保存它:

1.在名称键下拉查找中没有显示“排除”(我已排除未包括在报告中的销售人员)
2. 当在报告所在的工作表(个人绩效摘要)中选择该值时,下拉位置为 $A$7,报告工作表上的单元格 b266 不为 0。

如果满足这两个条件,则创建一个 pdf 并保存,如果不跳到选择中的下一个单元格。我有以下代码:

Sub PDF_Generator()

Dim cell As Range
Dim wsSummary As Worksheet
Dim counter As Long

Set wsSummary = Sheets("INDIVIDUAL PERFORMANCE SUMMARY")

For Each cell In Worksheets("NAME KEY").Range("$H2:$H60")
  If cell.Value <> "Exclude" Then
     'progress in status bar
     counter = counter + 1
     Application.StatusBar = "Processing file: " & counter & "/1042"
  If ThisWorkbook.Sheets("INDIVIDUAL PERFORMANCE SUMMARY").Range("C1") <> "TRUE" Then
  counter = counter + 1
     Application.StatusBar = "Processing file: " & counter & "/1042"
     With wsSummary
        .Range("$A$7").Value = cell.Value
        .ExportAsFixedFormat _
              Type:=xlTypePDF, _
              Filename:=ThisWorkbook.Sheets("INDIVIDUAL PERFORMANCE SUMMARY").Range("J1").Value & _
      "\" & cell.Value & ".pdf", _
              Quality:=xlQualityStandard, _
              IncludeDocProperties:=True, _
              IgnorePrintAreas:=False, _
              OpenAfterPublish:=False
     End With
  End If
  End If
Next cell

 Set wsSummary = Nothing
End Sub

我对 VBA 还是很陌生,请帮助这将节省我很多时间。

【问题讨论】:

  • 你没有说什么是失败/不工作。
  • 你昨天不是问过这个/类似的吗? stackoverflow.com/questions/32081548/…
  • 是的,我没有得到回复,所以我再次询问我真的需要帮助。 @Nelly27281 它仍然只是为每个下拉选择创建 PDF,并且只承认“排除”,但如果 B266 的值为 0,则不承认。
  • 你的 IF 有效吗?如果是这样,它只是打印到 pdf 部分?当我们甚至不知道您尝试打印的东西是什么样子时,我们应该如何帮助您?

标签: vba excel pdf


【解决方案1】:

编辑(根据评论)

在第二个条件下再添加一个 IF 条件:

If ThisWorkbook.Sheets("INDIVIDUAL PERFORMANCE SUMMARY").Range("C1") <> "TRUE" Then
    If (sheet.range("B226").value <> 0) Then
        'your code to create PDF
    End If
End If

这样,如果 B226 为 0,代码将不会创建 PDF。

【讨论】:

  • 我想编写代码以继续通过名称列表运行,只是跳过 B226 为 0 且不创建 PDF 的名称。
  • 所以你不想在一个 IF 中同时满足这两个条件?
  • 是的,例如,假设下拉列表中的名字是 Alfred,b266 是 1000 创建 pdf 下一个名称是 bryan,b266 是 0 跳过创建 pdf,下一个名称是 carl 和 b266是 15 创建 pdf
  • 那么在 Application.StatusBar 下插入它?
  • 感谢帮助,现在我收到编译错误:下一步没有 For
【解决方案2】:

B226的加和与语句和逻辑测试0

If ThisWorkbook.Sheets("INDIVIDUAL PERFORMANCE SUMMARY").Range("C1") <> "TRUE" And ThisWorkbook.Sheets("INDIVIDUAL PERFORMANCE SUMMARY).Range("B226").value <> 0 Then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多