By гвентейлор у понеділок, 29 березня 2021 р
Опубліковано в перевершувати
відповіді 0
симпатії 0
думки 2.8K
Голосів 0
Привіт. Я використовую ваш код, щоб надіслати діапазон Excel як вкладення електронної пошти, але отримую помилку під час виконання, якщо я скасую діапазон. Чи є код, який я можу додати, або msgbox, щоб запобігти цьому? Код подяки нижче.

Sub SendRange()
Dim xFile як рядок
Dim xFormat As Long
Dim Wb як робочий зошит
Dim Wb2 як робочий зошит
Dim Ws як робочий лист
Помутніти шлях до файлу як рядок
Зменшити ім'я файлу як рядок
Приглушити OutlookApp як об’єкт
Потьмарити OutlookMail як об’єкт
Dim WorkRng як діапазон
xTitleId = "Приклад"
Set WorkRng = Застосування.Вибір
Встановіть WorkRng = Application.InputBox("Діапазон", xTitleId, WorkRng.Address, Тип:=8)

Application.ScreenUpdating = Невірний
Application.DisplayAlerts = False
Установіть Wb = Application.ActiveWorkbook
Вб.Робочі аркуші.Доп
Встановіть Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Установіть Wb2 = Application.ActiveWorkbook
Виберіть Case Wb.FileFormat
Випадок xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Випадок xlOpenXMLWorkbookMacroEnabled:
    Якщо Wb2.HasVBProject Тоді
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Ще
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Випадок Excel8:
    xFile = ".xls"
    xFormat = Excel8
Випадок xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Зараз, "dd-mmm-yy h-mm-ss")
Встановити OutlookApp = CreateObject("Outlook.Application")
Встановити OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
За допомогою OutlookMail
    .To = "gtest@email.com"
    .CC = ""
    .BCC = ""
    .Subject = "Тести"
    .Body = "Привіт ."
    .Додатки.Додати Wb2.FullName
    .Надіслати
Кінець з
Wb2.Закрити
Вбийте FilePath & FileName & xFile
Встановіть OutlookMail = Нічого
Встановіть OutlookApp = Нічого
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 
Переглянути повне повідомлення