2014-01-26 2 views
1

Я пытаюсь добавить , добавив картинку в лист Excel, используя изображение в файле ресурсов, используя VB2010. Я могу сделать это, используя: 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 принимает ничего, кроме строки, чтобы определить, что изображение, которое вы хотите вставить.

Может ли кто-нибудь помочь вставить изображение из ресурсов на лист Excel в VB2010?

ответ

0

Аргумент, который вы должны передать этой функции excel interop, к сожалению, требует строки пути к файлу.

Вы можете попробовать следующее, хотя, и посмотреть, если он работает для вас:

  1. установить ресурс в PictureBox
  2. Сохранить изображение из вашего PictureBox в виде файла в формате JPEG и сохранить его в определенном место (Может быть папка в диске C :), используя этот код: PictureBox1.Image.Save(SaveFilePath, System.Drawing.Imaging.ImageFormat.Jpeg) Заметьте, что SAVEFILEPATH не должна включать в себя расширение .jpeg в его имени
  3. передать SAVEFILEPATH в строку
  4. использовать SAVEFILEPATH как строка представить toAddPictu повторно
  5. Удалите временный файл JPEG, сохраненный на диске C.

Продолжительное решение, да. Но следует работать с учетом ограничений.

+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) 
Смежные вопросы