La copie des valeurs à partir d'excel dans le corps de la messagerie outlook vb.net
C'est donc une version plus raffinée d'une question que j'ai posée tout à l'heure. J'ai essayé de trier ce pour un bon moment. J'ai trouvé un site qui a du sens, mais je ne peux pas le mettre en œuvre pour une raison quelconque. Je veux juste être en mesure de copier des informations à partir d'excel (tableaux, des graphiques, des plages, etc) dans le corps d'un e-mail outlook.
À partir d'ici:
http://pastebin.com/4VWmcrx6
Elle suggère:
Using VB.NET to copy Excel Range (a table) to body of Outlook email
Sub CopyFromExcelIntoEMail()
Dim Doc As Word.Document
Dim wdRn As Word.Range
Dim Xl As Excel.Application
Dim Ws As Excel.Worksheet
Dim xlRn As Excel.Range
Set Doc = Application.ActiveInspector.WordEditor
Set wdRn = Doc.Range
Set Xl = GetObject(, "Excel.Application")
Set Ws = Xl.Workbooks("Mappe1.xls").Worksheets(1)
Set xlRn = Ws.Range("b2", "c6")
xlRn.Copy
wdRn.Paste
End Sub
J'ai essayé plusieurs variantes, mais avec pas de chance.
Imports System.Data
Imports System.IO
Imports Microsoft.Office.Interop
Imports Office = Microsoft.Office.Core
Imports xlNS = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Imports System.Net.Mail
Imports excel1 = Microsoft.Office.Interop.Excel
Imports word1 = Microsoft.Office.Interop.Word
Imports outlook1 = Microsoft.Office.Interop.Outlook
Module Module1
Sub Main()
Dim Doc As Word.Document
Dim wdRn As Word.Range
Dim Xl As Excel.Application
Dim Ws As Excel.Worksheet
Dim xlRn As Excel.Range
Dim application As New Outlook.Application
Dim mail As Outlook.MailItem = CType(application.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
Doc = Application.ActiveInspector.WordEditor
wdRn = Doc.Range
Xl = GetObject("C:\Users\ajohnson\Desktop\Book1.xlsx", "Excel.Application")
Ws = Xl.Workbooks("Book1").Worksheets(1)
xlRn = Ws.Range("a1", "d2")
xlRn.Copy()
With mail
.Body = wdRn.Paste() & vbCr & wdRn.Paste()
End With
End Sub
End Module
Il ne semble pas comme il devrait être que difficile et j'ai une idée raisonnable de ce qui se passe, mais peu importe ce que j'essaie ça ne fonctionne pas. Ce code renvoie une com exception sur
Doc = Application.ActiveInspector.WordEditor
J'ai aussi essayé d'utiliser le code tel qu'il a été donner, mais il est dit que l'application n'est pas défini.
Toute aide serait grandement appréciée, Merci, comme toujours.
Pour la postérité (je vois cette question dans tous les sens): La solution de @Siddharth Déroute sera certainement le travail, mais si vous essayez de faire ne pas obtenir tronquée sur les mûres (il s'agit en réalité, je vous jure) une meilleure approche peut être trouvé dans les commentaires.
Sub Export_Range_Images()
' =========================================
' Code to save selected Excel Range as Image
' =========================================
Dim oRange As Range
Dim oCht As Chart
Dim oImg As Picture
Set oRange = Range("A1:B2")
Set oCht = Charts.Add
oRange.CopyPicture xlScreen, xlPicture
oCht.Paste
oCht.Export FileName:="C:\temp\SavedRange.jpg", Filtername:="JPG"
End Sub
Cela vient de ici, avec:
.HTMLBody="< img src='C:\Temp\logo.jpg'>" & vbCr & "< img src='C:\Temp\logo.jpg'>"
De ici.
L'idée étant que vous créez .les fichiers jpg de les rangées ou les tables qui vous intéressent et ensuite utiliser le format html pour les placer dans le corps de l'email. Entre ces deux approches, vous devriez être en mesure de le faire fonctionner.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci (ESSAYÉ ET TESTÉ)
J'ai utilisé de Ron
RangetoHTML
fonction ici.What we do currently is paste things as pictures.
Petite question par curiosité. Pourquoi voulez-vous insérer une plage excel comme une image? Parce que tout le monde est en train de faire la même chose?olMail.Attachments.Add "C:\MyImage.jpg"
et puis finalementolMail.HTMLBody = "<html><p>This is a picture.</p>" & "<img src='cid:MyImage.jpg' height=480 width=360>"
RangetoHTML
, alors vous devrez créer un fichier temporaire avec l'image insérée, puis lire le code-behind de ce qui est possible, mais peu bordélique à mon avis.TempFile = Environ$("temp")...
j'ai toujours l'objet de dumping de la mine dans le répertoire de l'addin ou quoi, et puis (espérons-le) les a Tués. Votre chemin semble beaucoup mieux. Est Environ$("temp") toujours disponible en diverses versions de Windows?