使用循环插入照片:与目标单元格的偏差逐渐增加

时间:2018-11-12 08:08:43

标签: excel vba excel-vba

我必须定期进行报告,根据该报告,需要将所使用的每个项目的照片插入特定位置以进行打印。例如,如果我使用3个项目,则需要将每个项目的照片放在A列的6+(i-1)* 23行中。我已经尝试过使用loop和picture.insert,但是总会发生的情况是第一张照片放置得很完美,而第二张照片以后的位置垂直向上偏移。我想知道是否有人经历过这种情况,以及是否有可用的解决方案。如果已经有了答案,我很抱歉,但是找不到。另外,为我在移动设备上键入的简化代码表示歉意。

model

观察部分1:

  • 无论我是否使用循环,当我使用单独的工作簿控制照片的放置时,都会出现这种现象

  • 不使用循环(按按钮即可手动执行宏),照片的放置在Excel 2010计算机中是完美的,而在Excel 2016计算机中水平(一致)是关闭的

  • 上述方法涉及在Excel 2016中编写代码

观察部分2:

  • 在解决循环问题之前,我将先解决非循环水平位移问题,以试图更好地理解问题

  • 每个工作簿的像素大小似乎不同,这可能是导致问题的原因(创建工作簿时不同的计算机可能具有不同的像素大小定义)

  • 例如,一个工作簿显示3.55列的宽度为46像素,而另一个工作簿显示3.50的宽度为49像素

  • 通过从一个工作簿复制整个工作表并将其粘贴到另一个工作簿中,我能够使两个工作簿的像素大小保持一致,并且似乎解决了水平位移(非循环)问题

  • 下一步将是尝试使用相同的工作簿来实现循环

1 个答案:

答案 0 :(得分:-1)

我认为以下方法应该有效:

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

如果仍然存在问题,可能值得检查图片是否不包含使图片“看起来”更低的空白/白色像素行?