Как сохранить исходный формат ячейки в макросе Excel?

Я новичок в Excel VBA, и мне удалось создать простой макрос для автоматизации некоторых электронных писем, которые несут настраиваемый отчет для людей на моей работе. В этом случае я использую рабочий лист, который изменяется в зависимости от информации, добавленной в файл в целом. Макрос использует эту информацию и создает настраиваемое электронное письмо. Некоторые из этих данных – это временные и процентные значения, а на листе ячейки хранятся эти форматы. Например, если человек проработал 3 часа в конкретной задаче, он покажет ячейку как «3:00». Но при создании переменных и их использовании для создания электронной почты значения отображаются в их числовом эквиваленте.

ПРИМЕР EMAIL

Это отчет 0.666666666666667! Идея этого автоматизированного сообщения электронной почты – помочь вам выполнить ваши ежедневные целевые ожидания. Не стесняйтесь обращаться к нам, если вы думаете, что что-то можно сделать лучше!

В настоящее время вы находитесь в: • 00:00 Время Рейтинг • 00:00 Время Время • 2.79282407407407E-02 of Not Rating Time С тех пор, как сейчас это 0.666666666666667, у вас должно быть 0.3125, поэтому вам не хватает 0.284571759259259. Кроме того, ваша ежедневная цель заканчивается теперь на уровне 0.133333333333333. PD: у вас есть 00:00, поэтому вы прекрасны !.

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

Sub SendEmail(what_address As String, subject_line As String, email_body As String) Dim olApp As Outlook.Application Set olApp = CreateObject("Outlook.Application") Dim olMail As Outlook.MailItem Set olMail = olApp.CreateItem(olMailItem) olMail.To = what_address olMail.Subject = subject_line olMail.BodyFormat = olFormatHTML olMail.HTMLBody = email_body olMail.Send End Sub Sub SendMassEmail() row_number = 1 Do DoEvents 'Adding 1 to the counter row_number = row_number + 1 'Creating the variables Dim mail_body_message As String Dim full_name As String Dim rating As String Dim quality_review As String Dim not_rating_time As String Dim inactive As String Dim absolute_target As String Dim missing As String Dim inactive_comment As String Dim expected_time As String Dim hour As String Dim recipient As String 'Define the non-moving elements mail_body_message = Sheet10.Range("J2") hour = Sheet10.Range("J8") expected_time = Sheet10.Range("J11") recipient = Sheet10.Range("B" & row_number) & "@accenture.com" 'Define the moving elements full_name = Sheet10.Range("A" & row_number) rating = Sheet10.Range("C" & row_number) quality_review = Sheet10.Range("D" & row_number) not_rating_time = Sheet10.Range("E" & row_number) inactive = Sheet10.Range("F" & row_number) absolute_target = Sheet10.Range("G" & row_number) missing = Sheet10.Range("H" & row_number) inactive_comment = Sheet10.Range("I" & row_number) 'Replacing elements in the email body mail_body_message = Replace(mail_body_message, "replace_name", full_name) mail_body_message = Replace(mail_body_message, "replace_hour", hour) mail_body_message = Replace(mail_body_message, "replace_rating", rating) mail_body_message = Replace(mail_body_message, "replace_quality", quality_review) mail_body_message = Replace(mail_body_message, "replace_nrt", not_rating_time) mail_body_message = Replace(mail_body_message, "replace_expected", expected_time) mail_body_message = Replace(mail_body_message, "replace_missing", missing) mail_body_message = Replace(mail_body_message, "replace_target", absolute_target) mail_body_message = Replace(mail_body_message, "replace_inactive", inactive) mail_body_message = Replace(mail_body_message, "replace_inacomment", inactive_comment) Call SendEmail(recipient, "DO NOT RESPOND - TEST EMAIL", mail_body_message) Loop Until row_number = Sheet10.Range("J5") MsgBox "The e-mails have been sent!" End Sub 

Вы по умолчанию используете свойство cell .Value. Укажите свойство .Text, чтобы получить то, что вы видите в ячейке.

 full_name = Sheet10.Range("A" & row_number).Text rating = Sheet10.Range("C" & row_number).Text quality_review = Sheet10.Range("D" & row_number).Text not_rating_time = Sheet10.Range("E" & row_number).Text inactive = Sheet10.Range("F" & row_number).Text absolute_target = Sheet10.Range("G" & row_number).Text missing = Sheet10.Range("H" & row_number).Text inactive_comment = Sheet10.Range("I" & row_number).Text 

Вы также можете объявить все вары строками.

  • VBA: Поиск электронной почты в почтовом ящике не по умолчанию?
  • что вызвало изменение файла вложений при отправке электронной почты Python
  • Добавить изображение в тело письма и подпись в Outlook через Excel-Vba
  • Добавьте адрес электронной почты в сообщение электронной почты Outlook, если значение ячейки равно 1
  • Автоматические почтовые сообщения Outlook с использованием VBA
  • Код Excel VBA для чтения имени пользователя из ячейки, затем отправьте электронное письмо этому пользователю
  • VBA: выберите первую отфильтрованную ячейку, затем перейдите на следующую
  • Excel создает электронную почту Outlook, но текст не выравнивается
  • Текстовое поле подсказки, которое будет сохранять форматирование Outlook
  • выберите, на какую учетную запись отправить адрес электронной почты Outlook?
  • Попытка открыть шаблон электронной почты Outlook с помощью excel VBA
  • Давайте будем гением компьютера.