VBA - 忽略隐藏的工作表 - 将特定工作表另存为 PDF

标签 vba excel pdf

我正在学习 VBA,以此来加快我工作中的某些流程。我必须以 PDF 格式生成的表格 excel 将房间列表发送到属性。我的以下代码效果很好,但是每当隐藏其中一个工作表时,我都会收到一条错误消息。我不得不经常隐藏床单,因为每次旅行的属性都会发生变化。

我想将第四张工作表中的工作表 PDF 到工作表名称“发布”。每当我在它们之间隐藏一张工作表时,我都会收到以下错误消息“运行时错误'5':无效的过程调用或参数”

这是代码:

Sub SaveAllPDF()
Dim I As Integer
Dim Fname As String
Dim TabCount As Long


TabCount = Sheets("Post").Index

' Begin the loop.

For I = 4 To TabCount
Sheets(I).Activate
With ActiveSheet
Fname = .Range("C15") & " " & .Range(" B1")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"C:\Users\brandon.ford\Desktop\Operation Automated\" & Fname,     
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
Next I
End Sub

任何人都知道如何解决这个问题,所以“For I = 4 to TabCount”会忽略任何隐藏的标签?任何帮助将不胜感激,我长期以来一直在尝试解决这个问题并且没有太多的 VBA 知识。

最佳答案

对于您当前的循环,最好通过在尝试导出之前检查 WorkSheet 是否可见来避免这种情况。 Visible 属性包含此信息。如果工作表可见,则该值应为 xlSheetVisible。

这是带有检查的完整代码:

Sub SaveAllPDF()
Dim I As Integer
Dim Fname As String
Dim TabCount As Long


TabCount = Sheets("Post").Index

' Begin the loop.

For I = 4 To TabCount
Sheets(I).Activate
With ActiveSheet
    If .Visible = xlSheetVisible Then

        Fname = .Range("C15") & " " & .Range(" B1")
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        "C:\Users\brandon.ford\Desktop\Operation Automated\" & Fname,
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

    End If
End With
Next I
End Sub

关于VBA - 忽略隐藏的工作表 - 将特定工作表另存为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415951/

相关文章:

VBA:如何在 <td> 标签中获取隐藏的href

graph - 创建包含多个调查结果的 Excel 图表

excel - 创建一个 VBA 版本的字典,每个键有 2 个值

node.js - 如何从 Node.js 程序运行 Excel VBA?

pdf - PDF 文件以标题 %pdf 开头。一个有效的 pdf 文件可以有超过 1 个这样的标题吗?

pdf - 如何将PDF中的所有颜色更改为它们各自的免费颜色;如何使PDF阴性

android - 在 Android 移动网络应用程序中嵌入 pdf 时如何避免打开按钮?

database - Access VBA : enter expression in user form, 将计算结果存储在表中?

excel - VBA POST 格式问题

excel - 要填充 ListBox 的过滤数据数组