Я пытаюсь скопировать Excel-диаграмму в Word. У меня есть следующий скрипт в Excel, и он работает с Office 2003 для ПК и Office Mac 2011. В более поздней версии Office (2016) диаграмма не изменяется при вставлении, а токен, который он ищет, не заменяется диаграммой как это происходит в более ранних версиях. Вот сценарий, который работает, но не в более поздних версиях Office. Любая помощь будет принята с благодарностью.VBA Script для копирования Excel-диаграммы в Word, не работающей в более поздних версиях Word
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Set wrd = CreateObject("Word.Application")
wrd.Documents(DocumentName).Activate
wrd.Selection.Find.ClearFormatting
With wrd.Selection.Find
.Text = "insert" & ChartName 'This is the token it is looking for in the Word document and is where the chart should be inserted.
.Replacement.Text = ""
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
If .Found = True Then
wrd.Selection.PasteAndFormat Type:=13 'wdChartPicture
End If
В предыдущих версиях Управления этот сценарий принимает активные копии диаграммы Это и вставляет его в слово, глядя на знак и вставив его. Токен заменяется диаграммой, и диаграмма изменяется. В новых версиях токен остается в нижней части диаграммы, и диаграмма не изменяется.
Если невозможно определить, почему он не работает, можно ли написать код таким образом, чтобы он работал во всех версиях Office? Я пытался убедиться, что все настройки одинаковы, но могу ли я упустить некоторые предпочтения, которые могут вызвать проблему. Любые мысли были бы очень признательны, потому что это для меня большая проблема.
Когда вы проходите через этот код, выполняется условие '.Found = True'? –
Если это так, я бы посмотрел на метод ExecuteMSO ([здесь] (http://stackoverflow.com/questions/35605460/copy-text-formatting-in-a-excel-to-word-script/35606101# 35606101) является аналогичным вопросом, копируя диапазон ячеек из Excel в Word), а вот [несколько больше] (http://stackoverflow.com/search?q=user%3A1467082+ExecuteMso) в основном из Excel в PowerPoint, но общая идея такая же, вам просто нужно определить, какой глагол вызывать, и это должно быть самым надежным. –
Состояние. Действительно верно. Я попытался заменить строку wrd.selection.pasteandformat Тип: = 13 с wrd.CommandBars.ExecuteMso «PasteasPicture» и получить сообщение об ошибке, говорящее, что «объект не поддерживает это свойство или метод» – Steve