2014-01-26 34 views
1

我想要使用VB2010將圖片添加到Excel工作表,使用資源文件中的圖片。我可以使用:xlDATAWorkSheet.Shapes.AddPicture(...)與編碼的路徑,但我想從資源文件中使用它。 這是我已經試過: xlDATAWorkSheet.Shapes.AddPicture(CType(My.Resources.ResourceManager.GetObject("Logo"), Bitmap), False, True, 0, 0, 300, 50),但我得到一個錯誤:找不到文件(指向標誌字)*如何從資源插入圖片到Excel工作表,使用VB2010

我也試過: xlDATAWorkSheet.Shapes.AddPicture(My.Resources.Logo, False, True, 0, 0, 300, 50),但我得到同樣的錯誤:文件未找到。

它正常工作與路徑硬編碼,像xlDATAWorkSheet.Shapes.AddPicture("C:/Logo.jpg", False, True, 0, 0, 300, 50),的圖片,但我想用它從資源文件(所以它會在另一臺機器上運行)

此外,該工程確定,所以標誌圖像是實實在在地存在着:

frmMain.pic1.Image = CType(My.Resources.ResourceManager.GetObject("Logo"), Image) 

它似乎不過,根據MSDN文檔的形狀,也不會出現給AddPicture採取其他什麼比一個字符串來確定要插入什麼樣的形象。

任何人都可以幫助從資源插入到VB2010 Excel工作表中的圖片?

回答

0

不得不傳遞給該excel互操作函數的參數不幸需要一個文件路徑字符串。

你可以試試雖然下面,看看它是否適合你:

  1. 設置資源,以一個PictureBox
  2. 保存從圖片框爲JPEG文件的圖片,並將其保存在一個確定位置(也許在驅動器C :)文件夾使用此代碼:PictureBox1.Image.Save(SaveFilePath, System.Drawing.Imaging.ImageFormat.Jpeg)注意SAVEFILEPATH沒有包括在它的名字JPEG格式擴展
  3. 通過SAVEFILEPATH爲字符串
  4. 使用SAVEFILEPATH作爲字符串提交添加到.AddPictu再
  5. 刪除您在驅動器C保存

冗長的解決方案臨時JPEG文件,是的。但應該在限制條件下工作。

+0

謝謝你,我有點想通這一點。也許我必須這樣去。再次感謝。 – user3238566

1

您可以在代碼中自動使用剪貼板來添加圖像以實現卓越。

下面的代碼在VB網2008年

Dim MyScoreCard As Excel.Worksheet = Nothing 
Dim MyRange As Excel.Range = Nothing 
Dim AwayBit As Bitmap =CType(My.Resources.ResourceManager.GetObject("picturename"),Bitmap) 

Clipboard.Clear() 
Clipboard.SetDataObject(AwayBit, True) 
MyRange = CType(MyScoreCard.Range("Q41:Q41"), Excel.Range) 
MyScoreCard.Paste(MyRange, AwayBit) 

'Count will return the index of the last shape pasted to the worksheet 
Dim idx As Integer 
idx = MyScoreCard.Shapes.Count 

'The code below will allow you to scale the image in excel from vb net 
MyScoreCard.Shapes.Item(idx).LockAspectRatio = Microsoft.Office.Core.MsoTriState.msoFalse 

MyScoreCard.Shapes.Item(idx).ScaleWidth(0.75, Microsoft.Office.Core.MsoTriState.msoFalse, Office.MsoScaleFrom.msoScaleFromTopLeft) 

MyScoreCard.Shapes.Item(idx).ScaleHeight(0.75, Microsoft.Office.Core.MsoTriState.msoFalse, Office.MsoScaleFrom.msoScaleFromTopLeft) 
相關問題