Если я использую ActiveCell.Value2 = "новое значение"
ActiveCell отображает «новое значение», но теряет пользовательское форматирование
Нет, это не так, я только что проверил (с Excel 2003). Открыл новый пустой документ, отформатировал столбец с некоторыми цветами и определенным пользователем форматом чисел и ввел
ActiveCell.Value2="1"
в ближайшем окне редактора VBA. Существующий формат сохраняется без изменений. Поэтому, если у вас есть другой сценарий (где формат теряется), опишите его подробно.
РЕДАКТИРОВАТЬ: если это поведение действительно отличается в VSTO, в качестве обходного пути, вы можете попытаться сохранить соответствующую информацию о формате ActiveCell перед изменением значения, например
fci = ActiveCell.Range.Font.ColorIndex
ici = ActiveCell.Range.Interior.ColorIndex
pat = ActiveCell.Range.Interior.Pattern
nf = ActiveCell.Range.NumberFormat
затем измените значение
ActiveCell.Value2 = "new value"
и затем снова переназначить информацию о формате
ActiveCell.Range.Font.ColorIndex = fci
ActiveCell.Range.Interior.ColorIndex = ici
ActiveCell.Range.Interior.Pattern = pat
ActiveCell.Range.NumberFormat = nf
(но будьте осторожны, это «воздушный кодекс»).