Использование VB.NET для копирования Excel Range (таблицы) в основную часть электронной почты Outlook - PullRequest
0 голосов
/ 27 марта 2012

Это близко ко многим различным вопросам, которые были заданы, и я прошел через все их, но я не могу определиться с лучшим подходом.

Это то, что я прочитал (и попробовал) до сих пор:

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

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 может быть автономным и его проще найти моим коллегам.

Спасибо, переполнение стека!

1 Ответ

0 голосов
/ 30 августа 2012

В итоге я переключился на использование .htmlbody в сочетании с преобразованием всех таблиц в файлы изображений, что позволило мне сохранить их и ввести их с помощью <img src>, поэтому html сохранил день.Дополнительным преимуществом является то, что изображения будут отображаться полностью без усечения на ежевике, что было еще одной проблемой, с которой я столкнулся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...