Excel 尝试将除两张特定图纸外的所有图纸导出到单个PDF';s以选项卡命名';姓名

Excel 尝试将除两张特定图纸外的所有图纸导出到单个PDF';s以选项卡命名';姓名,excel,vba,Excel,Vba,嗨,我有一个电子表格,我想有每个工作表导出到自己的个人PDF文件;但是,我想忽略数据从中提取的两个选项卡。我宁愿忽略这两个,而不是列出其他的,因为如果我们添加图纸,这些也需要导出 我还自学了vba,所以如果有什么好的编码实践可以改进,我也欢迎这些技巧 到目前为止,我有以下几点: Sub SheetsToPDFs() Dim ws As Worksheet Dim nm As String nm = ws.Name For Each ws In ActiveWorkbook.Works

嗨,我有一个电子表格,我想有每个工作表导出到自己的个人PDF文件;但是,我想忽略数据从中提取的两个选项卡。我宁愿忽略这两个,而不是列出其他的,因为如果我们添加图纸,这些也需要导出

我还自学了vba,所以如果有什么好的编码实践可以改进,我也欢迎这些技巧

到目前为止,我有以下几点:

Sub SheetsToPDFs()

Dim ws As Worksheet
Dim nm As String
nm = ws.Name

    For Each ws In ActiveWorkbook.Worksheets
        If nm <> "Tab 1 Name" And nm <> "Tab 2 Name" Then
        ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=nm & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    End If
Next ws

End Sub
子表stopDfs()
将ws设置为工作表
将nm变暗为字符串
nm=ws.Name
对于ActiveWorkbook.Worksheets中的每个ws
如果nm“表1名称”和nm“表2名称”,则
ws.ExportAsFixedFormat_
类型:=xlTypePDF_
文件名:=nm&“.pdf”_
质量:=xlQualityStandard_
IncludeDocProperties:=True_
IgnorePrintAreas:=假_
OpenAfterPublish:=True
如果结束
下一个ws
端接头

我希望这会忽略这两个选项卡(名称是不同的文本,但会保持常规),并将其他所有内容导出为当前文件夹中自己的工作表(稍后可能会添加特定路径)。但是,我收到了错误“运行时错误'91”:未设置对象变量或With block variable”。

感谢@Yasserkalil所做的更改。需要将
nm=ws.name
移动到For循环中,以便宏能够识别此更改

我还添加了一个写在其中的句点,以便在导出文件时,该句点位于文件名中,以消除与以前版本相比保存的风险(此报告为月报)

子表stopDfs()
将ws设置为工作表
将nm变暗为字符串
将文件路径设置为字符串
将周期变暗为字符串
期间=月(日)和年(日)
对于ActiveWorkbook.Worksheets中的每个ws
nm=ws.Name
如果nm“标签名称1”和nm“标签名称2”,则
ws.ExportAsFixedFormat_
类型:=xlTypePDF_
文件名:=nm&“&Period&“.pdf”_
质量:=xlQualityStandard_
IncludeDocProperties:=True_
IgnorePrintAreas:=假_
OpenAfterPublish:=True
如果结束
下一个ws
端接头

将这一行移动到每个..行的
nm=ws.Name
后面。行有些,这很有效!你能解释一下为什么我自己学习时会修正它吗?因为在每个循环中,等于ws.Name的变量nm每次都会不同,所以你必须把它放在循环中。@MarkS。您正在循环,并希望在循环期间捕获ws.name。如果在循环之外有ws.name,则只捕获一个,并将所有内容命名为相同的名称(或者在本例中为ws.name=nothing,因为您尚未定义ws。将来,如果您需要响应,或者希望响应某个对象,请使用“@” tag@YasserKhalil谢谢,这更有意义。感谢您简洁、有效和快速的回答。感谢您的解释!无需为变量
Period]使用命名范围。您可以使用VBA函数
Period=Month(Date)&“&&Year(Date)`
Sub SheetsToPDFs()

Dim ws As Worksheet
Dim nm As String
Dim Filepath As String
Dim Period As String
Period = Month(Date) & "." & Year(Date)

     For Each ws In ActiveWorkbook.Worksheets
     nm = ws.Name
         If nm <> "Tab Name 1" And nm <> "Tab Name 2" Then
            ws.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=nm & " " & Period & ".pdf", _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=True
        End If
Next ws

End Sub