Я вижу несколько вещей теперь, когда я смотрю на это более подробно. Первый фрагмент Excel код, это не работает и не может работать в Word, и на самом деле он поднимает компиляцию ошибки.
When I try running this in Word VBA, I get the error
ActiveChart.Axes(xlCategory).Select
With Selection.Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
Компилятор выделяет .Border
, потому что нет Border
свойства Selection
объекта в Word.
Объект Selection
является немного неоднозначным, because it can be different things. Подумайте об этом как о варианте, который относится к тому, что выбрано, или к точке курсора, если ничего не выбрано.
Так что это объясняет method or data member not found
, который не является ошибкой во время выполнения, но ошибка компиляции, предполагающая, что ваш код не может выполнить как есть.
Если заменить Select
и Selection
с самим объектом, например, так:
With ActiveChart.Axes(xlCategory).Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
Вы получите другую ошибку, потому что нет такого понятия, как ActiveChart
в Word, то есть только объект Excel. (Использование Option Explicit
предупредило бы вас об этой проблеме). Словом, вам нужно обратиться к форме или диаграмме, и вы можете сделать это с помощью дескриптора формы, как вы это сделали, с переменной.Попробуйте:
With salesChart.Axes(xlCategory).Border
.ColorIndex = 57
.Weight = xlMedium
.LineStyle = xlContinuous
End With
Это может быть полезно:
How to avoid using Select in Excel VBA macros
Хотя написана для Excel конкретно, это лучше программирование концепция: Select
является довольно грубым способом делать большинство вещей, и хотя некоторые исключения, почти все, что вы можете сделать с VBA, можно сделать более эффективно, непосредственно работая с объектом, а не сначала , выбрав, а затем действуя на выбор - это redundan т. Это также беспорядочно, потому что вам нужно постоянно держать , выбрав, и ваш код обязательно двусмыслен, ссылаясь на неопределенный Selection
объект (вариант), а не сильно набранный объект и т. Д.
Каково происхождение этой диаграммы? Если это из экземпляра copy/paste-special (расширенный метафайл), вы не сможете получить доступ к тем же свойствам/etc. которые доступны для полномасштабной диаграммы MS Excel. –
Благодаря, @DavidZemens Это встроенный граф генерируется в Word: Тусклого salesChart Как Диаграмма Тусклое chartWorkSheet как объект Набор salesChart = ActiveDocument.Shapes.AddChart.Chart Набор chartWorkSheet = salesChart.ChartData.Workbook.WorkSheets (1) Возможно, вы столкнулись с проблемой, и в этом случае мне придется вернуться к открытию Excel из Word и с помощью кода VBA, который здесь размещается, что, конечно же, работает как шарм. Однако это позор. Открытие и закрытие Excel - это гораздо больше времени, а также как-то неэлегантное. – khargushoghli