Я пишу макрос Excel VBA для перевода MS Word Form на различные языки.Оригинальные фразы на английском языке перечислены в столбце A, а соответствующие переводы перечислены в полях B, C и т. Д. Нет проблем с заменой перевода на английский в текстовых частях формы, но я борюсь с изменением заполнителя.текст в элементах управления .(Я должен упомянуть, что я ограничен использованием Office 2010, поскольку это то, что еще есть у компании.)
Вот мой код:
Dim frm As Word.Document, cc As ContentControl
Set frm = Documents.Open("C:\[document]", False)
If frm.FormsDesign = False Then 'make sure doc is in Design Mode
frm.ToggleFormsDesign
End If
For Each cc In frm.ContentControls
If cc.Type = 1 Then 'this is for textboxes
cc.SetPlaceholderText , , "phldr 1"
Else 'this is for all other controls: eg, drop-downs
cc.SetPlaceholderText , , "phldr 2"
End If
Next cc
Когда я запускаю это, текст заполнителя (который в оригинальной английской форме выглядит как «Ввод текста») полностью исчезает, без замены на предполагаемый текст-заполнитель.
Я попытался запустить код из другого Word документа (скорее изExcel) - т.е. не из самой формы - и происходит то же самое.
Но если я вставлю этот код в оригинальную форму (с соответствующими изменениями, например, с изменением "frm")"ThisDocument"), работает нормально.Другими словами, я могу успешно использовать метод SetPlaceholderText, когда модуль VBA находится в том же документе (Word).Но я действительно хочу запустить это из Excel, потому что там я буду перечислять несколько переводов.