Код ошибки, который вы видите, не имеет прямого отношения к языку. Единственное, что Word знает о языке, это какой словарь правописания использовать. В противном случае его текст представляет собой произвольную последовательность символов Юникода.
Что я подозреваю, так это то, что кодировка Unicode сингальских строк, которые вы пытаетесь написать, не является UTF-8. Другая возможность состоит в том, что строка содержит некоторые управляющие символы (как упомянуто в сообщении об ошибке), особенно вертикальную вкладку (VT, 0xB или десятичное число 11), которая может возникать при копировании и вставке из PowerPoint.
Этот последний легче проверить, так что, возможно, начать там.
import re
def sanitize_str(s):
control_chars = "\x00-\x1f\x7f-\x9f"
control_char_re = re.compile("[%s]" % control_chars)
return control_char_re.sub("", s)
document.add_paragraph(sanitize_str(a))