首页 > 解决方案 > 如何阻止我下载的图像从我的桌子上掉下来?

问题描述

我使用 VBA 创建了一个工具,该工具接受电子表格输入并生成 PDF 报告输出。该报告的一部分包括在线托管的图片,这些图片的链接存储在单元格中。

此工具的部分代码下载这些图像并将它们放置在保存链接的单元格上,将它们格式化为单元格的预设尺寸(100 x 100px)

当图像列中的每个单元格都有图片链接时,代码可以正常工作。但是,并非报表中的所有订单项都附有图片。

发生这种情况时,空白单元格之前的最后一个图像将被放置在下一个图像链接之前的最后一个空白单元格中,本质上是“下拉”到报告中的错误位置。

我试过修改代码,但无济于事。我想出了一个临时解决方法,用 IFBLANK(链接到白色方块的图像)格式化单元格,以便插入这个白色方块以呈现空白单元格的外观,但这需要用户保留白色图像正方形并直接在代码中引用它,或者将白色正方形托管在永久活跃的站点上,我对此感到不舒服。我希望这个工具尽可能面向未来,以便其他人可以继续使用它。

    'Download Images
    Dim Pshp As Shape
    Dim xRg As Range
    Dim xCol As Long

    On Error Resume Next

    Set Rng = Sheets("POMEC Report").Range(Sheets("POMEC DATA").Range("R6"))

    For Each Cell In Rng
        filenam = Cell
        ActiveSheet.Pictures.Insert(filenam).Select
        Set Pshp = Selection.ShapeRange.Item(1)

        If Pshp Is Nothing Then GoTo lab

        xCol = Cell.Column
        Set xRg = Cells(Cell.Row, xCol)

        With Pshp
            .LockAspectRatio = msoFalse
            .Width = 100
           .Height = 100
            .Top = xRg.Top + (xRg.Height - .Height) / 2
            .Left = xRg.Left + (xRg.Width - .Width) / 2
        End With
lab:
        Set Pshp = Nothing

    Next

我在另一个选项卡中有一个帮助单元格,用于计算报告中的最后一行数据,因此我可以使范围动态(POMEC 报告 R6),但即使此范围是硬编码的,也会发生此错误。

我做错了什么导致这个?任何帮助是极大的赞赏!

标签: excelvba

解决方案


推荐阅读