2009-02-06 81 views

回答

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單元格中不能包含圖片。這些照片生活在一個浮動在細胞周圍的隱形繪圖層上。它們可以根據細胞座標進行定位,這使它感覺像是在細胞中「生存」。

+0

在Excel 2010中,Pictures.Insert函數已被靜靜地更改。以這種方式插入的圖像成爲文件的「實時」鏈接。因此,要在表單上創建靜態圖像,現在應該使用Shapes.AddPicture(fileName,false,true,...),如下所述。 – newman 2012-01-17 18:02:39

1

當然,下面的代碼提供了使用微軟互操作庫一個很好的例子:

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; 
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) 

它不是那麼直截了當,因爲你必須指定確切的位置和尺寸,否則,很酷!

相關問題