Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 11:32   #1
Sensygirl
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 12
Вопрос Сообщение из Excel

Здравствуйте!
Нужно отправлять из Excel сообщения по нажатию кнопки. Причем в тело письма должны записаться выбранные строки из таблицы. Пока что получилось вписать только значение одной ячейки.Sub m()

Range("F5").Select

Dim Outlook_ As New Outlook.Application
Dim Message As Outlook.MailItem
Set Message = Outlook_.CreateItem(olMailItem)
With Message
.Subject = ""
.To = "ла-ла-ла@ла-ла-ла.лa"
.Body = Selection
.Display
End With


Set Message = Nothing
Set Outlook_ = Nothing

End Sub


А как можно отправлять в тело письма строки или диапазоны?????
Sensygirl вне форума Ответить с цитированием
Старый 02.10.2009, 11:40   #2
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

посмотрите SendMail Method в справке по Visual Basic
EugeneS вне форума Ответить с цитированием
Старый 02.10.2009, 11:43   #3
Sensygirl
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 12
По умолчанию

Посмотрела, не отвечает потребностям
Sensygirl вне форума Ответить с цитированием
Старый 07.10.2009, 15:23   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

А если попробовать сделать в цикле что-то типа
Код:
.body =.body & Cells(i,j).Value
?
motorway вне форума Ответить с цитированием
Старый 07.10.2009, 15:49   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Можете попробовать такой вариант:

Код:
Sub m()
    Dim Outlook_ As New Outlook.Application
    Dim Message As Outlook.MailItem
    Set Message = Outlook_.CreateItem(olMailItem)
    With Message
        .Subject = "Тема письма"
        .To = "name@domen.org"
        .Body = ТекстДиапазона(Selection)
        .Display
    End With
    Set Message = Nothing
    Set Outlook_ = Nothing
End Sub

Function ТекстДиапазона(ByVal ra As Range) As String
    Dim cell As Range
    For Each cell In ra.Cells
        ТекстДиапазона = ТекстДиапазона & IIf(Len(cell.Text), cell.Text, " ")
    Next cell
    ТекстДиапазона = Trim(ТекстДиапазона)
End Function
PS: Убрал строку Range("F5").Select, поскольку, если макрос выделяет определённую ячейку,
то проблема решается при помощи строки .Body = [f5]
EducatedFool вне форума Ответить с цитированием
Старый 07.10.2009, 17:56   #6
Sensygirl
Пользователь
 
Регистрация: 01.10.2009
Сообщений: 12
По умолчанию

Что прямо вот так, русским текстом?? Я попробовала - не получилось..


Ой, простите, спешу с выводами.. что-то получается, но текст переносится в письмо без пробелов, все сплошняком но уже что-то!!!!!!!!!!!


все, пробелы добавила спасибо Вам преогромное!!!


Код:
Function ТекстДиапазона(ByVal ra As Range) As String
    Dim cell As Range
    For Each cell In ra.Cells
      If cell.Text <> "" Then
         ТекстДиапазона =  ТекстДиапазона & IIf(Len(cell.Text), cell.Text, "") & "  "
      End If
      If cell.Column = 9 Then  ТекстДиапазона =  ТекстДиапазона & vbNewLine
      
    Next cell
     ТекстДиапазона = Trim( ТекстДиапазона)
End Function

вот, теперь все

Последний раз редактировалось EducatedFool; 07.10.2009 в 18:05. Причина: пользуемся тегами оформления кода, и кнопкой ПРАВКА
Sensygirl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщение... KoBRaAndrey Общие вопросы Delphi 8 02.10.2009 18:56
Сообщение Shevali Общие вопросы Delphi 3 07.06.2009 19:53
Сообщение Автозаполнение в excel или word Николетта Microsoft Office Excel 3 24.04.2009 21:22
Icq сообщение Marsik Помощь студентам 2 10.04.2008 04:22