是否可以通过COM将图像插入excel单元格?

时间:2009-02-06 20:09:18

标签: excel com image automation

我已经使用自动化将值插入单元格,但是我从未见过任何文档,例如,演示插入除文本和/或公式之外的任何内容。

是否有人能够从外部应用程序插入图像?

3 个答案:

答案 0 :(得分:2)

Dim FileName as string
FileName="c:\text.jpg"
Set NewPic = ActiveSheet.Pictures.Insert(FileName)
NewPic.top=100
NewPic.left=100

如果您想将图片定位到特定单元格,请选择该单元格作为范围,并使用上/左/范围来定位图片。

样品:http://exceltip.com/st/Insert_pictures_using_VBA_in_Microsoft_Excel/486.html

注意:在Excel中,单元格不能包含图片。这些图片生活在一个隐藏在细胞周围的不可见的绘图层上。它们可以根据细胞坐标进行定位,这使它感觉它们生活在“细胞”中。

答案 1 :(得分:2)

我看到它已经被回答,但请看我的帖子here

基本上不是使用Worksheet.Pictures.Insert方法(MSDN建议您不直接使用,并返回原始COM对象),而是尝试使用Worksheet.Shapes.AddPicture方法。

Dim range As Microsoft.Office.Interop.Excel.Range
Dim pic as Microsoft.Office.Interop.Excel.Shape
Dim filePath as String

range = ...
filePath = ...
pic = range.Worksheet.Shapes.AddPicture(filePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, range.Left, range.Top, 300, 300)

这不是那么简单,因为你必须指定确切的位置和尺寸,否则,非常酷!

答案 2 :(得分:1)

当然,以下代码使用Microsoft Interop库提供了一个很好的示例:

   string excelfilename = @"C:\excelfile.xlsx";
   string picturename = @"C:\image.jpg";

    object missing = Type.Missing;
    Microsoft.Office.Interop.Excel.Application app = new ApplicationClass();
    Workbook book =  app.Workbooks.Add(missing);
    Worksheet sheet = (Worksheet)book.ActiveSheet;
    Pictures pics = (Pictures)sheet.Pictures(missing);
    pics.Insert(picturename, missing);
    book.SaveAs(excelfilename, missing, missing, missing, missing, missing, XlSaveAsAccessMode.xlNoChange,
        missing, missing, missing, missing, missing);
    app.Quit();
    app = null;