Вставка фотографий с помощью цикла: Отклонение от целевой ячейки постепенно увеличивается - PullRequest
0 голосов
/ 12 ноября 2018

Я должен регулярно составлять отчет, в котором фотография каждого использованного элемента должна быть вставлена ​​в определенную позицию для печати. Например, если я использую 3 элемента, мне нужно разместить фотографию каждого элемента в столбце A, строка 6+ (i-1) * 23. Я попытался использовать цикл и picture.insert, но всегда происходит то, что первое фото идеально размещается, а второе - постепенно отклоняется по вертикали. Я хотел бы знать, сталкивался ли кто-нибудь с этим и есть ли какие-либо доступные решения. Я прошу прощения, если уже есть ответ, но я не смог его найти. Кроме того, извиняюсь за упрощенный код, который я печатаю с мобильного устройства.

For i=1 to lastRow
    Set targetCell = range(some range)
    Set pic = ws.pictures.insert(file name)
    With pic
        .Top = targetCell.Top
        .Left = targetCell.Left
    End With
Next i

Наблюдения, часть 1:

  • это явление возникает, когда я управляю размещением фотографий, используя отдельную книгу, независимо от того, использую я цикл или нет

  • без использования цикла (нажатие кнопки для выполнения макроса вручную) размещение фотографий идеально на компьютерах Excel 2010 и отключено по горизонтали (последовательно) на компьютерах Excel 2016

  • вышеупомянутый метод предполагает написание кода в Excel 2016

Наблюдения, часть 2:

  • Я начну с решения проблемы горизонтального смещения без петель, прежде чем заняться проблемой петель, чтобы попытаться лучше понять проблему

  • представляется, что размер пикселя в каждой книге различен, что может быть причиной проблемы (разные компьютеры могут иметь разные определения размера пикселей при создании книг)

  • например, одна рабочая книга показывает ширину столбца 3,55 как 46 пикселей, а другая - 3,50 как 49 пикселей

  • , скопировав весь лист из одной книги и вставив его в другой, я смог сделать согласованным размер пикселя обеих книг, и это, похоже, решило проблему горизонтального смещения (без зацикливания)

  • следующим шагом будет попытка использовать ту же рабочую книгу для реализации циклов

1 Ответ

0 голосов
/ 12 ноября 2018

Я думаю, что должно работать следующее:

For i = 1 To lastRow
    Set targetCell = ws.Cells(6 + (i - 1) * 23, 1)
    Set pic = ws.pictures.insert(file name)
    With pic
        .Top = targetCell.Top
        .Left = targetCell.Left
    End With
Next i

Если проблемы все еще существуют, возможно, стоит проверить, что на фотографиях отсутствуют строки с пустыми / белыми пикселями, из-за которых изображение «выглядит» ниже?

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