Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Где поменять название страницы для отсылки сообщения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Где поменять название страницы для отсылки сообщения (Макросы/Sub)
Где поменять название страницы для отсылки сообщения
ant6729 Дата: Четверг, 31.07.2014, 18:17 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Проблема в том, что когда переименовываю Лист1 на любое другое название - макрос уже не работает. Подскажите, пожалуйста, где нужно прописать нужное название. Ну, скажем, название ПРОВЕРКА, пусть будет такое название первого листа в Excel.
[vba]
Код
Sub Mail_Selection_Range_Outlook_Body()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Don't forget to copy the function RangetoHTML in the module.
'Working in Excel 2000-2013
       Dim rng As Range
       Dim OutApp As Object
       Dim OutMail As Object

       Set rng = Nothing
       On Error Resume Next
       'Only the visible cells in the selection
       Set rng = Selection.SpecialCells(xlCellTypeVisible)
       'You can also use a fixed range if you want
       'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible)
       On Error GoTo 0

       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)

       On Error Resume Next
       With OutMail
           .To = "Ivanov@mail.ru"
           .CC = ""
           .BCC = ""
           .Subject = ""
           .HTMLBody = RangetoHTML(rng)
           .Send   'or use .Display
       End With
       On Error GoTo 0

       With Application
           .EnableEvents = True
           .ScreenUpdating = True
       End With

       Set OutMail = Nothing
       Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2013
       Dim fso As Object
       Dim ts As Object
       Dim TempFile As String
       Dim TempWB As Workbook

       TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

       'Copy the range and create a new workbook to past the data in
       rng.Copy
       Set TempWB = Workbooks.Add(1)
       With TempWB.Sheets(1)
           .Cells(1).PasteSpecial Paste:=8
           .Cells(1).PasteSpecial xlPasteValues, , False, False
           .Cells(1).PasteSpecial xlPasteFormats, , False, False
           .Cells(1).Select
           Application.CutCopyMode = False
           On Error Resume Next
           .DrawingObjects.Visible = True
           .DrawingObjects.Delete
           On Error GoTo 0
       End With

       'Publish the sheet to a htm file
       With TempWB.PublishObjects.Add( _
            SourceType:=xlSourceRange, _
            Filename:=TempFile, _
            Sheet:=TempWB.Sheets(1).Name, _
            Source:=TempWB.Sheets(1).UsedRange.Address, _
            HtmlType:=xlHtmlStatic)
           .Publish (True)
       End With

       'Read all data from the htm file into RangetoHTML
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
       RangetoHTML = ts.readall
       ts.Close
       RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                             "align=left x:publishsource=")

       'Close TempWB
       TempWB.Close savechanges:=False

       'Delete the htm file we used in this function
       Kill TempFile

       Set ts = Nothing
       Set fso = Nothing
       Set TempWB = Nothing
End Function

[/vba]
К сообщению приложен файл: outlooktesting.xlsm (21.1 Kb)


Сообщение отредактировал ant6729 - Четверг, 31.07.2014, 18:21
 
Ответить
СообщениеПроблема в том, что когда переименовываю Лист1 на любое другое название - макрос уже не работает. Подскажите, пожалуйста, где нужно прописать нужное название. Ну, скажем, название ПРОВЕРКА, пусть будет такое название первого листа в Excel.
[vba]
Код
Sub Mail_Selection_Range_Outlook_Body()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Don't forget to copy the function RangetoHTML in the module.
'Working in Excel 2000-2013
       Dim rng As Range
       Dim OutApp As Object
       Dim OutMail As Object

       Set rng = Nothing
       On Error Resume Next
       'Only the visible cells in the selection
       Set rng = Selection.SpecialCells(xlCellTypeVisible)
       'You can also use a fixed range if you want
       'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible)
       On Error GoTo 0

       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)

       On Error Resume Next
       With OutMail
           .To = "Ivanov@mail.ru"
           .CC = ""
           .BCC = ""
           .Subject = ""
           .HTMLBody = RangetoHTML(rng)
           .Send   'or use .Display
       End With
       On Error GoTo 0

       With Application
           .EnableEvents = True
           .ScreenUpdating = True
       End With

       Set OutMail = Nothing
       Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2013
       Dim fso As Object
       Dim ts As Object
       Dim TempFile As String
       Dim TempWB As Workbook

       TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

       'Copy the range and create a new workbook to past the data in
       rng.Copy
       Set TempWB = Workbooks.Add(1)
       With TempWB.Sheets(1)
           .Cells(1).PasteSpecial Paste:=8
           .Cells(1).PasteSpecial xlPasteValues, , False, False
           .Cells(1).PasteSpecial xlPasteFormats, , False, False
           .Cells(1).Select
           Application.CutCopyMode = False
           On Error Resume Next
           .DrawingObjects.Visible = True
           .DrawingObjects.Delete
           On Error GoTo 0
       End With

       'Publish the sheet to a htm file
       With TempWB.PublishObjects.Add( _
            SourceType:=xlSourceRange, _
            Filename:=TempFile, _
            Sheet:=TempWB.Sheets(1).Name, _
            Source:=TempWB.Sheets(1).UsedRange.Address, _
            HtmlType:=xlHtmlStatic)
           .Publish (True)
       End With

       'Read all data from the htm file into RangetoHTML
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
       RangetoHTML = ts.readall
       ts.Close
       RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                             "align=left x:publishsource=")

       'Close TempWB
       TempWB.Close savechanges:=False

       'Delete the htm file we used in this function
       Kill TempFile

       Set ts = Nothing
       Set fso = Nothing
       Set TempWB = Nothing
End Function

[/vba]

Автор - ant6729
Дата добавления - 31.07.2014 в 18:17
Rioran Дата: Четверг, 31.07.2014, 18:31 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
ant6729, здравствуйте.

Использую Ваш файл, переименовываю первый лист - и всё работает.

Ваш макрос обращается к области, выделенной мышью. Что Вы выделяете, удерживая левую кнопу мыши - то и влезет в письмо. Может, вы выделяли пустую ячейку?

П.С. стоит подробнее описывать, что и в какой момент не работает.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеant6729, здравствуйте.

Использую Ваш файл, переименовываю первый лист - и всё работает.

Ваш макрос обращается к области, выделенной мышью. Что Вы выделяете, удерживая левую кнопу мыши - то и влезет в письмо. Может, вы выделяли пустую ячейку?

П.С. стоит подробнее описывать, что и в какой момент не работает.

Автор - Rioran
Дата добавления - 31.07.2014 в 18:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Где поменять название страницы для отсылки сообщения (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!