Excel - 隐藏发票行中的最后一张图片

时间:2016-07-15 16:54:32

标签: excel vba excel-vba excel-2010

我已经构建了一个Invoice工作表,其顶部(A1:K19)将保持静态;这是发票的顶部。在第19行下方开始单个项目行,这些项目行将填充订购的项目。

我为用户创建了一个宏,它会自动将发票格式化为1页PDF并自动隐藏未使用的订单项行;但是我在每个行项目行中都有图片。

当我运行我的宏时,它会隐藏所有想要最后一张的照片。如何隐藏刚刚伸出的最后一个图像框,并且不会隐藏行。如果我单独隐藏那一行,它就会隐藏,但是如果一组则没有。

以下是我编写的当前VBA脚本。

Sub Save_Quote_As_PDF()

Application.ScreenUpdating = False

For i = 20 To 59
If ActiveSheet.Cells(i, 3) = "" Then
ActiveSheet.Cells(i, 3).EntireRow.Hidden = True
End If
Next i

Dim PdfFilename As Variant

PdfFilename = Application.GetSaveAsFilename( _
    InitialFileName:=ActiveWorkbook.Path & "\" & ActiveSheet.Range("N2").Value, _
    FileFilter:="PDF, *.pdf", _
    Title:="Save As PDF")

If PdfFilename <> False Then

    With ActiveSheet.PageSetup
        .Orientation = xlPortrait
        .PrintArea = "$A$1:$K$78"
        .PrintTitleRows = ActiveSheet.Rows(19).Address
        .Zoom = False
        .FitToPagesTall = 1
        .FitToPagesWide = 1
    End With


    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=PdfFilename, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

End If

  For i = 20 To 59
If ActiveSheet.Cells(i, 3) = "" Then
ActiveSheet.Cells(i, 3).EntireRow.Hidden = False
End If
Next i

 Application.ScreenUpdating = True

End Sub

以下是pdf部分的屏幕截图,其中显示了显示

的pic对象

图像不隐藏在PDF结果中的屏幕截图

Screenshot of Image Not Hiding in PDF results

1 个答案:

答案 0 :(得分:1)

我用自己的示例数据重新创建了上面的代码。问题似乎是图像没有“移动和大小与细胞”(在他们的属性中)。

如果你在其他地方有代码,那就是插入这些图像,那么你需要这样做,

Sub Move_Size() 
    Dim i As Long 
    For i = 1 To ActiveSheet.Shapes.Count
       On Error Resume Next 
       With ActiveSheet.Shapes.Item(i)
            .Placement = xlMoveAndSize 
            .PrintObject = True 
        End With 
    Next i 
    On Error Goto 0 
End Sub

Taken from here