将多个 Excel 工作表范围转换为 PDF VBA

英勇

下面的代码是获取 Col"E" 的状态如果它是 = Include 那么它对应的工作表范围将被转换为 PDF。

我在结束了尝试,但它不工作收到错误invalid procedure call or argument就行了

rng.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=saveLocation

我们将不胜感激您的帮助以解决问题。

在此处输入图片说明

Sub SelectSheets_Ranges()

  Dim sh As Worksheet, lastR As Long, rng As Range, arr, arrSplit, i As Long, k As Long
  
  Set sh = ActiveSheet
  lastR = sh.Range("C" & sh.Rows.Count).End(xlUp).Row
  
  ReDim arr(lastR - 1)
  For i = 6 To lastR
        If sh.Range("E" & i).Value = "Include" Then
            arr(k) = sh.Range("C" & i).Value & "|" & sh.Range("D" & i).Value: k = k + 1
        End If
  Next i
  ReDim Preserve arr(k - 1)
  For i = 0 To UBound(arr)
        arrSplit = Split(arr(i), "|")
        Set rng = Worksheets(arrSplit(0)).Range(arrSplit(1))


'Create and assign variables
Dim saveLocation As String

saveLocation = "C:\Users\marks\OneDrive\Documents\myPDFFile.pdf"

'Save a range as PDF
rng.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=saveLocation

  
  Next
End Sub
法尼杜鲁

请尝试下一个代码。它保存在ThisWorkbook路径中,将 pdf 文件命名为“myPDFFile_sheetName.pdf”。每个创建的文件都将在默认的 pdf 应用程序中打开。如果工作正常,您可以适当更改最后一个参数:


Sub SelectSheets_Ranges_ExpPdf()
  Dim sh As Worksheet, lastR As Long, rng As Range, arr, arrSplit, i As Long, k As Long
  
  Set sh = ActiveSheet
  lastR = sh.Range("C" & sh.Rows.Count).End(xlUp).Row
  
  ReDim arr(lastR - 1)
  For i = 6 To lastR
        If sh.Range("E" & i).Value = "Include" Then
            arr(k) = sh.Range("C" & i).Value & "|" & sh.Range("D" & i).Value: k = k + 1
        End If
  Next i
  If k > 0 Then
        ReDim Preserve arr(k - 1)
  Else
        MsgBox "No appropriate range (containing ""Include"") could be found...:exit sub"
  End If
  Dim boolHide As Boolean, boolProt As Boolean
  ActiveWorkbook.Unprotect "4321" 'in order to unprotect he workbook structure
  For i = 0 To UBound(arr)
        boolHide = False: boolProt = False
        arrSplit = Split(arr(i), "|")
        Set rng = Worksheets(arrSplit(0)).Range(arrSplit(1))
        
        If ActiveWorkbook.Sheets(arrSplit(0)).ProtectContents Then _
                ActiveWorkbook.Sheets(arrSplit(0)).Unprotect "4321": boolProt = True
                Debug.Print arrSplit(0)
        If ActiveWorkbook.Sheets(arrSplit(0)).Visible <> xlSheetVisible Then _
                ActiveWorkbook.Sheets(arrSplit(0)).Visible = xlSheetVisible: boolHide = True
        
        'Create and assign variables
        Dim saveLocation As String
        
        saveLocation = ThisWorkbook.Path & "\myPDFFile_" & arrSplit(0) & ".pdf"
        
        'Save a range as PDF
        rng.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          saveLocation, Quality:=xlQualityStandard, IgnorePrintAreas:=False, OpenAfterPublish:=True
         If boolHide Then ActiveWorkbook.Sheets(arrSplit(0)).Visible = xlSheetHidden
         If boolProt Then ActiveWorkbook.Sheets(arrSplit(0)).Protect "4321"
  Next
  ActiveWorkbook.Protect "4321"
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用VBA将HTML表转换为Excel

Excel VBA遍历多个工作表

将Excel范围转换为VBA字符串

在VBA Excel的多个工作表上的AddComment

将Excel工作簿中的图纸转换为pdf文件时的横向取向问题VBA

Excel VB.Net-将数组转换为范围并将值设置为工作表

如何在PowerShell中将多个Excel工作簿的第一个工作表转换为pdf?

VBA Excel-如何将工作簿B中命名范围的值转换为工作簿A中相同/相似的命名范围?

Excel转换为PDF,多个范围相同的工作表(字符串),但PrintArea 255字符串限制

Excel VBA。将单元格列表转换为范围

使用VBA将Excel工作簿导出为PDF

保存工作表pdf excel vba

将多个范围转换为单个PDF,范围分开

将Excel工作表转换为无边距和空白的PDF

使用VBA自动将多个xml转换为Excel

VBA-将Excel表转换为Word中的文本

使用VBA在多个Excel工作表中从不同范围创建PDF

文件未保存错误,将Excel工作表转换为PDF

将Excel工作表范围导出到PDF错误

Excel VBA代码将文件夹中的rtf文件批量转换为pdf文件

将多个 Excel 工作表另存为 PDF

使用VBA将多个图像转换为excel

Excel VBA:如何从同一工作表复制多个范围

Excel VBA将特定文件夹中的所有Word文件转换为PDF

Excel VBA 将每张工作表导出为一个 PDF 页面

将多个 Excel 工作表转换为 CSV

将工作表 VBA 转换为所有工作表

使用工作表名称作为书签将 Excel 转换为 PDF

将 Excel 工作表转换为 PDF,无限循环错误