Как я могу предотвратить падение загруженных изображений с моего стола? - PullRequest
0 голосов
/ 08 июля 2019

Я создал инструмент, использующий VBA, который принимает данные электронной таблицы и генерирует отчет в формате PDF. Часть этого отчета включает изображения, размещенные в Интернете, со ссылкой на эти изображения, хранящиеся в ячейке.

Часть кода этого инструмента загружает эти изображения и размещает их над ячейкой, содержащей ссылку, форматируя их в соответствии с заданными размерами ячейки (100 x 100 пикселей)

Когда каждая ячейка в столбце изображения имеет ссылку на изображение, код работает нормально. Однако не все позиции в отчете имеют прикрепленное изображение.

Когда это происходит, последнее изображение перед пустой ячейкой будет помещено в последнюю пустую ячейку перед следующей ссылкой на изображение, по существу «выпадающее» в неправильном месте в отчете.

Я пытался возиться с кодом, но безрезультатно. Я придумал временное исправление форматирования ячеек с помощью 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), но эта ошибка возникает, даже если этот диапазон жестко задан.

Что я делаю не так, чтобы вызвать это? Любая помощь с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...