使用VB.NET将Excel范围(一个表)复制到Outlook电子邮件的正文中

时间:2012-03-27 17:39:13

标签: .net vb.net excel email outlook

这已接近很多不同的问题,而且我已经完成了所有这些问题,但我无法理清最佳方法。

这是我到目前为止所阅读(并尝试过)的内容:

http://msdn.microsoft.com/en-us/library/ff519602%28v=office.11%29.aspx

http://social.msdn.microsoft.com/Forums/en-US/exceldev/thread/955fca20-c3a3-4523-b2d2-ac9016ae1ff8

我尝试将RangetoHTML功能转换为vb.net,但我从来没有真正使用它,所以如果有人有任何提示让这个解决方案工作我会喜欢你的任何指导。我直接复制了第二个链接中的代码并更改了它,所以我认为它会起作用,但我在其中一个pastespecial调用中不断收到COM异常。

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/9d9e1583-064a-4085-bc65-8f809d73dbb3

http://social.msdn.microsoft.com/Forums/en-US/outlookdev/thread/5248288a-0f86-4fe7-8235-2ccb85d2b014/#c50e51e1-87c2-4af9-9195-e0c61eb32bc8

http://www.vboffice.net/sample.html?mnu=2&lang=en&smp=41&cmd=showitem&pub=6

他们建议使用Word作为停止点(或作为outlook中的编辑器,这是我的outlook版本的默认值),这是合理的,但我遇到了这里究竟发生了什么的问题:

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

为了让这个在vb.net中运行,我想我必须打开一个word文档而不是activeinspector.wordeditor(至少它不像他们那样工作的方式),但是当我这样做时,我没有得到来自wdRn.paste调用的任何数据(没有任何内容被粘贴),这对我来说似乎是正确的,因为我从未将其定义为任何内容。

http://www.outlookcode.com/d/code/htmlimg.htm

我也遇到了这个解决方案,我现在正在调查,但我想现在发布这个解决方案,看看是否有人有任何想法,并且可能能够引导我走上更好的道路。

我可以按照要求发布我的代码,但它实际上只是这些链接中的内容的变体,并试图让它在vb.net中运行。我想一个选择是切换到VBA,但我喜欢VB.NET可以是独立的,更容易找到我的同事。

谢谢Stack Overflow!

1 个答案:

答案 0 :(得分:0)

最后,我切换到使用.htmlbody并将所有表格转换为图像文件,这样我就可以保存它们并使用<img src>输入它们,因此html保存了这一天。额外的好处是图像将完全显示而不会截断黑莓,这是我遇到的另一个问题。