首页 > 解决方案 > 导出为 PDF 宏缺少形状

问题描述

我有一个宏,单击按钮后,它将生成条形码图像(图像仅由形状组成),然后将 3 张纸导出为 pdf。我遇到的问题是这样做会生成条形码图像,但是当导出为 PDF 时,用于生成条形码的形状不会显示出来。如果我在不使用 export to pdf 宏的情况下打印或打印到 pdf,它们会出现,但这违背了宏的要点。

更令人头疼的是,此代码位于电子表格的不同版本(电子表格是模板)上,但宏过程在该电子表格上运行良好。我将工作代码复制/粘贴到给我带来麻烦的电子表格中,而麻烦制造者仍然无法正常工作。下面是相关代码。为什么导出的 PDF 中不包含形状?

 Sub BevelPrint_Click()
' DisplayBarcode generates a code128 scannable barcode. Max of 14 characters for the selected line width and max width

Call DisplayBarcode

Sheets(Array("(Cal Cert) Page 1 of 3", "(Cal Cert) Page 2 of 3", "(Cal Cert) Page 3 of 3")).Select
   ' If Application.Dialogs(xlDialogPrinterSetup).Show = True Then
   Dim varResult As Variant
   Dim ActBook As Workbook
   Dim defaultPath As String
   Dim WorkbookName As String
   'Dim fso As New Scripting.FileSystemObject
   ' WorkbookName = fso.GetBaseName(ThisWorkbook.Name)
   WorkbookName = ThisWorkbook.Sheets("(0) Calibration System QC").Range("B2").Value
   WorkbookName = WorkbookName & " Cert"




   defaultPath = "\\TSISVFP01\MANUFACTURING\W405 - Particle\"
   defaultPath = defaultPath & WorkbookName
        'displays the save file dialog
   varResult = Application.GetSaveAsFilename(FileFilter:= _
            "PDF File (*.pdf), *.pdf, Excel Files (*.xlsx), *.xlsx", Title:="Save Cert as PDF", _
            InitialFileName:=defaultPath)

   If varResult <> False Then
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        varResult, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    End If
   ' End If
    Sheets("(0) Calibration System QC").Select
End Sub
Sub DisplayBarcode()
Dim s As Shape
    ThisWorkbook.Worksheets("(Cal Cert) Page 1 of 3").Activate
   For Each s In ThisWorkbook.Worksheets("(Cal Cert) Page 1 of 3").Shapes
        If s.Name Like "*Straight*" Then
            ThisWorkbook.Worksheets("(Cal Cert) Page 1 of 3").Shapes(s.Name).Select
         Selection.Delete
        End If

   Next s

   Code128Generate_v2 184, 72, 9, 1.5, Worksheets("(Cal Cert) Page 1 of 3"), ThisWorkbook.Sheets("(0) Calibration System QC").Range("B2"), 40
    Dim t As Shape
    For Each t In ThisWorkbook.Worksheets("(Cal Cert) Page 1 of 3").Shapes
        t.ControlFormat.PrintObject = True
    Next t
End Sub

标签: excelvbapdf

解决方案


推荐阅读