2015-02-05 5 views
0

Я пытаюсь создать макрос, который захватывает выделение ячеек из электронной таблицы Excel, вставляет ячейки в новое письмо Outlook, а затем изменяет формат ячеек.Вставить ячейки в Outlook, затем преобразовать таблицу в текст в Excel

В частности, я хочу, чтобы преобразовать таблицу в текст, а затем изменить шрифт Arial размером 10.

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

Может ли кто-нибудь помочь?

Sub Email_test() 
Dim rng As Range 
Dim OutApp As Object 
Dim OutMail As Object 
Set rng = Nothing 
Set rng = Sheets("Master").Range("A1:B99").SpecialCells(xlCellTypeVisible) 
If rng Is Nothing Then 
    MsgBox "The selection is not a range or the sheet is protected. " & _ 
      vbNewLine & "Please correct and try again.", vbOKOnly 
    Exit Sub 
End If 
With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
End With 
Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 
With OutMail 
    .To = "[email protected]" 
    .CC = "" 
    .BCC = "" 
    .Subject = "Cells as text " 
    .HTMLbody = RangetoHTML(rng) 

    ' In place of the following statement, you can use ".Display" to 
    ' display the e-mail message. 

    .Display 
End With 
End Sub 

ответ

0

Это будет работать для вас, а не HTMLbody использования body также удалили диапазон HTML функции

Sub Email_test() 
    Dim rng As Range 
    Dim OutApp As Object 
    Dim OutMail As Object 
    Set rng = Nothing 
    Set rng = Sheets("Master").Range("A1:B99").SpecialCells(xlCellTypeVisible) 
    If rng Is Nothing Then 
     MsgBox "The selection is not a range or the sheet is protected. " & _ 
       vbNewLine & "Please correct and try again.", vbOKOnly 
     Exit Sub 
    End If 
    With Application 
     .EnableEvents = False 
     .ScreenUpdating = False 
    End With 
    Dim v As Variant: v = rng.Value 
    Dim tempStr As String: tempStr = "" 
    For i = LBound(v, 1) To UBound(v, 1) 
      For j = LBound(v, 2) To UBound(v, 2) 
       If j = 2 Then 
        tempStr = tempStr & v(i, j) & vbCrLf 
       Else 
        tempStr = tempStr & v(i, j) & " " 
       End If 
      Next j 
     Next i 
    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 
    With OutMail 
     .To = "[email protected]" 
     .CC = "" 
     .BCC = "" 
     .Subject = "Cells as text " 
     .body = tempStr 

     ' In place of the following statement, you can use ".Display" to 
     ' display the e-mail message. 

     .Display 
    End With 
End Sub 

Пожалуйста, отметьте, как ответ, если вы удовлетворены ответом

+0

Спасибо, что помогает. Проблема только в том, что теперь я потерял все форматирование из ячеек. – Jake

+0

Вы сказали, что хотите преобразовать таблицу в текст :). Вы имели в виду, что хотите иметь таблицу без полей? – Jeanno

+0

Я хочу преобразовать таблицу в текст, но хочу сохранить форматирование, например, полужирным шрифтом и подчеркивать в определенных областях – Jake

0

Объект Перспективы модель обеспечивает три основных способа для рабочих органов:

  1. Body - строка, представляющая тело четкого текста элемента Outlook.
  2. HTMLBody - строка, представляющая тело HTML указанного элемента.
  3. Word editor - Объектная модель документа Microsoft Word отображаемого сообщения. Свойство WordEditor класса Inspector возвращает экземпляр класса Document из объектной модели Word, который вы можете использовать для настройки тела сообщения.

    Подробнее об этих способах можно узнать на странице Chapter 17: Working with Item Bodies. Это нам до вас, что выбрать.

Смежные вопросы