Подобный вопрос достаточно частый, и прежде чем создавать тему я перелопатил макрос моего предшественника (который пытаюсь починить) и прочитал вот эти темы:
Calculate 'ДЛЯ ПЕРВОГО ПИСЬМА Sheets("Letter 1").Select
'Находим последнюю строчку Range("A8").Select Selection.End(xlDown).Select a = Selection.Row b = "A" & (a + 2)
'Копируем нижнюю часть письма Range("I4:I16").Select Selection.Copy Range(b).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
'Range для тела письма c = "A4:G" & (a + 15)
'Range для адресантов Main Sheets("Users").Select Range("F3").Select Selection.End(xlDown).Select d = Selection.Row e = "" For N = 4 To d e = e + Range("F" & N).Text + ";" Next N
'Range для адресантов Copy Range("H3").Select Selection.End(xlDown).Select f = Selection.Row g = "" For N = 4 To f g = g + Range("H" & N).Text + ";" Next N Sheets("Letter 1").Select
' Создание первого письма Dim rngg As Range Dim OutApp As Object Dim OutMail As Object
Set rngg = Nothing On Error Resume Next 'Only the visible cells in the selection Set rngg = ActiveWorkbook.Worksheets("Letter 1").Range(c) 'You can also use a fixed range if you want 'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible) On Error GoTo 0
If rngg 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 = e .CC = g .BCC = "" .Subject = ActiveWorkbook.Worksheets("Letter 1").Range("A3") .HTMLBody = RangetoHTML(rngg) 'HTMLBody .Attachments.Add (MyFolderM & "\" & MyFileM) Do While MyFile <> "" .Attachments.Add (MyFolder & "\" & MyFile) MyFile = Dir Loop ' .Attachments.Add "\\BETTA\Deals.xlsx" .Display 'or use .Display use .Send End With On Error GoTo 0
With Application .EnableEvents = True .ScreenUpdating = True End With
Set OutMail = Nothing Set OutApp = Nothing
' Удаляем нижную часть для следующего дня Sheets("Letter 1").Select d = "A" & (a + 2) & ":A" & (a + 14) Range(d).Select Selection.ClearContents Range("B1").Select
End Sub
[/vba]
Прикладываю также сам файл т.к. адресаты и текст внесены в Excel несколько замысловато.
Пробовал в Set rngg ссылаться на конкретный диапазон с текстом, менял (на всякий случай) rngg на rng - не помогло, но как я понял проблема в том что excel не определяет функцию RangetoHTML и где-то нужно поставить "заветную галочку"...
Подскажите пожалуйста - где ошибка
[p.s.] файл Excel приложу вечером - на работе отсутствует такая возможность
Доброго времени суток, уважаемые форумчане!
Сразу попрошу - не спешите удалять тему
Подобный вопрос достаточно частый, и прежде чем создавать тему я перелопатил макрос моего предшественника (который пытаюсь починить) и прочитал вот эти темы:
Calculate 'ДЛЯ ПЕРВОГО ПИСЬМА Sheets("Letter 1").Select
'Находим последнюю строчку Range("A8").Select Selection.End(xlDown).Select a = Selection.Row b = "A" & (a + 2)
'Копируем нижнюю часть письма Range("I4:I16").Select Selection.Copy Range(b).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
'Range для тела письма c = "A4:G" & (a + 15)
'Range для адресантов Main Sheets("Users").Select Range("F3").Select Selection.End(xlDown).Select d = Selection.Row e = "" For N = 4 To d e = e + Range("F" & N).Text + ";" Next N
'Range для адресантов Copy Range("H3").Select Selection.End(xlDown).Select f = Selection.Row g = "" For N = 4 To f g = g + Range("H" & N).Text + ";" Next N Sheets("Letter 1").Select
' Создание первого письма Dim rngg As Range Dim OutApp As Object Dim OutMail As Object
Set rngg = Nothing On Error Resume Next 'Only the visible cells in the selection Set rngg = ActiveWorkbook.Worksheets("Letter 1").Range(c) 'You can also use a fixed range if you want 'Set rng = Sheets("YourSheet").Range("D4:D12").SpecialCells(xlCellTypeVisible) On Error GoTo 0
If rngg 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 = e .CC = g .BCC = "" .Subject = ActiveWorkbook.Worksheets("Letter 1").Range("A3") .HTMLBody = RangetoHTML(rngg) 'HTMLBody .Attachments.Add (MyFolderM & "\" & MyFileM) Do While MyFile <> "" .Attachments.Add (MyFolder & "\" & MyFile) MyFile = Dir Loop ' .Attachments.Add "\\BETTA\Deals.xlsx" .Display 'or use .Display use .Send End With On Error GoTo 0
With Application .EnableEvents = True .ScreenUpdating = True End With
Set OutMail = Nothing Set OutApp = Nothing
' Удаляем нижную часть для следующего дня Sheets("Letter 1").Select d = "A" & (a + 2) & ":A" & (a + 14) Range(d).Select Selection.ClearContents Range("B1").Select
End Sub
[/vba]
Прикладываю также сам файл т.к. адресаты и текст внесены в Excel несколько замысловато.
Пробовал в Set rngg ссылаться на конкретный диапазон с текстом, менял (на всякий случай) rngg на rng - не помогло, но как я понял проблема в том что excel не определяет функцию RangetoHTML и где-то нужно поставить "заветную галочку"...
Подскажите пожалуйста - где ошибка
[p.s.] файл Excel приложу вечером - на работе отсутствует такая возможностьSlym1349
Сообщение отредактировал Slym1349 - Пятница, 09.08.2019, 12:30
На всякий случай поясню для тех кто придет в поисках ответов в эту тему - добавил под написанный выше макрос функцию из третьей ссылки, без каких либо изменений - и все заработало!!!
_Boroda_, огромное, человеческое спасибо!!!!
На всякий случай поясню для тех кто придет в поисках ответов в эту тему - добавил под написанный выше макрос функцию из третьей ссылки, без каких либо изменений - и все заработало!!!Slym1349
_Boroda_, а такой вопрос - после радостного сохранения и закрытия файла с макросами он перестал запускаться - Excel прекращает работу.
Подробности ошибки:
Цитата
Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: EXCEL.EXE Версия приложения: 16.0.4873.1000 Отметка времени приложения: 5cffdd4f Имя модуля с ошибкой: VBE7.DLL Версия модуля с ошибкой: 7.1.10.56 Отметка времени модуля с ошибкой: 57e9c547 Код исключения: c0000005 Смещение исключения: 00000000000e35a1 Версия ОС: 6.1.7601.2.1.0.256.48 Код языка: 1049
Дополнительные сведения об этой проблеме: LCID: 1049 skulcid: 1049
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом: C:\Windows\system32\ru-RU\erofflps.txt
Соответственно вопрос - как открыть файл? Или как хотя бы из него вытащить макросы?
_Boroda_, а такой вопрос - после радостного сохранения и закрытия файла с макросами он перестал запускаться - Excel прекращает работу.
Подробности ошибки:
Цитата
Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: EXCEL.EXE Версия приложения: 16.0.4873.1000 Отметка времени приложения: 5cffdd4f Имя модуля с ошибкой: VBE7.DLL Версия модуля с ошибкой: 7.1.10.56 Отметка времени модуля с ошибкой: 57e9c547 Код исключения: c0000005 Смещение исключения: 00000000000e35a1 Версия ОС: 6.1.7601.2.1.0.256.48 Код языка: 1049
Дополнительные сведения об этой проблеме: LCID: 1049 skulcid: 1049
Pelena, спасибо за наводку - я так понял Вы имеет ввиду - Параметры - Центр управления безопасностью - Параметры макросов - отключить все макросы без уведомления(/с уведомлением) - ? На домашнюю не было возможности скинуть тот файл и проверить данный способ, буду пробовать в понедельник.
P.S. поскольку не могу редактировать первое сообщение, то Excel файл из которого формируется письмо прикладываю здесь.
Pelena, спасибо за наводку - я так понял Вы имеет ввиду - Параметры - Центр управления безопасностью - Параметры макросов - отключить все макросы без уведомления(/с уведомлением) - ? На домашнюю не было возможности скинуть тот файл и проверить данный способ, буду пробовать в понедельник.
P.S. поскольку не могу редактировать первое сообщение, то Excel файл из которого формируется письмо прикладываю здесь.Slym1349