【问题标题】:How to insert a picture followed by text into an Excel file如何将图片后跟文本插入到 Excel 文件中
【发布时间】:2012-05-24 04:37:27
【问题描述】:

我需要使用 VBscript(来自 QTP)将图片前后插入文本到 Excel 文件中。

我不能使用 ActiveCell.Worksheet.Pictures.Insert,因为此命令不会将图片保留在 Excel 文件中(自 Excel 2007 起)。

使用方法: objExcel.ActiveSheet.Shapes.AddPicture ImagePath, False, True, 0, PrevHeight, ptWidth, ptHeight

我需要找到上面插入了我的图片的单元格名称,或者如何在某些单元格上方插入图片而不是坐标,或者如何获取与坐标对应的单元格。

找到 Shape 的 TopLeftCell 和 BottomRightCell 属性,但似乎无法让它们在 VBSCript 中返回实际值。

谢谢。

【问题讨论】:

    标签: vba vbscript excel qtp


    【解决方案1】:

    也许(来自 QTP)的评论把它扔掉了,但我刚刚制作了一个 vbScript 来完全使用图片插入来完成您想要的操作。我的结果是一张漂亮的胖图片,排列在 B2 的左上角和 F16 的左下角 - 值得注意的是它正好在 F16,但可能足够接近! - 在我的图片上方和下方有文字。另外,当我关闭文件并重新打开时,图片仍然存在。

    Set objXL = CreateObject("Excel.Application")
    objXL.visible = true
    
    Set wkb = objXL.Workbooks.Open("P:\Script\vbScript\Help\InsertPicture.xlsx")
    Set ws = wkb.Sheets("Sheet1")
    Set p = ws.Pictures.Insert("C:\Blue.jpg")
    
    Set objRng = ws.Range("B2:F15")
    With p
       .Top = objRng.Top
       .Left = objRng.Left
       .Width = objRng.Width 
       .Height = objRng.Height
    End With
    
    ws.Range("B1").Value = "myTop"
    ws.Range("B16").Value = "myBottom"
    

    【讨论】:

    • 图片大小可以不同。它也不应该调整大小
    • 在这种情况下,只需从代码中删除 .width 和 .height 即可。我想,如果你变得狡猾,在将图片的左上角位置设置为给定的单元格后,你可以测量图片的高度,并根据 excel 行高(标准 15)进行测量并确定哪个单元格就在图片的正下方。
    • 这就是我想避免的——计算单元格高度你确定没有别的办法可以做吗?
    • 嗯,我不知道你插入图片的工作簿是否有预先存在的格式或任何东西,但是 Excel 的标准行高是 15,所以应该很容易玩与图片高度相反...说 RoundUp(picture_height/15)... 这个答案将为您提供需要偏移多少个单元格才能获得图片底部的第一个完整单元格
    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多