Есть ячейка A1, в которой содержатся строки с разным форматированием (см. вложение): 3. Жирный текст 2. Красный текст 1. Обычный текст
Как с помощью VBA в ячейку, в начало, добавить еще одну строку обычного текста, чтобы существующее форматирование не нарушилось, т.е. 3-я строка осталась жирной, 2-я Красной, а 1-я осталась без форматирования? Уточнение: приведенное форматирование текста внутри ячейки это просто пример, т.е. на самом деле оно может быть произвольным.
РЕШЕНИЕ №2 от БМВ, в ответе #11: Ограничения: 1. В процессе вставки подменяются некоторые цвета текста внутри ячейки, например стандартный зеленый #00B050. 2. Если на листе используется условное форматирование, то после вставки целевая ячейка исключается из диапазонов существующих условий условного форматирования.
Код
Sub insertText()
sXml = Cells(1, 1).Value(xlRangeValueXMLSpreadsheet)
sXml = Application.Trim(Replace$(Replace$(Replace$(sXml, vbCrLf, " "), vbLf, " "), vbCr, " "))
s = "Type=""String"" xmlns=""http://www.w3.org/TR/REC-html40"">"
p = InStr(sXml, s) + Len(s)
sXml = Left(sXml, p - 1) & "<Font html:Color=""#000000"">4. Обычный текст
</Font>" & Mid(sXml, p, 32768)
Cells(1, 1).Value(xlRangeValueXMLSpreadsheet) = sXml
End Sub
ОГРОМНОЕ СПАСИБО: Alec Perle (Решение1), БМВ (Решение 2), Jack Famous (комментарий про MID) и конечно автору первоисточника - ZVI.
Есть необходимость из Excel осуществлять отправку ранее сохраненных писем (папка "Черновики"). Код отправки см. ниже. Код работает, НО если перед отпавкой в Оутлуке открыть папку Черновики и выбрать любое сообщение (не открыть, а просто "встать" на него), то часть писем не отправиться и при отправке будет выдана ошибка: Run-time error ... "Этот метод нельзя использовать со встроенным элементом отправки почты". Что это значит? Почему так происходит? И как это можно победить?
Код
Sub SendSaved()
Dim oOutApp As Outlook.Application
Dim oNamespace As Outlook.Namespace
Dim oFolder As Outlook.MAPIFolder
Dim oMail As Outlook.MailItem
Dim i As Long
Set oOutApp = GetObject(, "Outlook.Application")
Set oNamespace = oOutApp.GetNamespace("MAPI")
Set oFolder = oNamespace.GetDefaultFolder(olFolderDrafts)
For i = 1 To oFolder.Items.Count
Set oMail = oFolder.Items.Item(i)
oMail.Send
Set oMail = Nothing
Next
Set oFolder = Nothing
Set oNamespace = Nothing
Set oOutApp = Nothing
End Sub