Как автоматически измерять линии в PPT на основе определенных цветовых кодов - PullRequest
0 голосов
/ 25 июня 2018

Я новичок в программировании VBA, и я впервые пишу код VBA для PPT. У меня был небольшой опыт работы с VBA Excel.

Итак, моя проблема в том, что у меня есть повторяющаяся задача по измерению линий автофигуры в презентации PPT на работе. Измеряя, я имею в виду получение высоты и ширины линии в дюймах и умножение на определенный коэффициент преобразования, который я предоставлю.

Вот схема того, что я хочу сделать VBA: 1. Найдите все «синие» строки во всей презентации PPT. Мне может понадобиться указать значения RGB цвета. 2. Найдите ширину и высоту каждой строки, умножьте на число, которое я введу, и выведите окончательную ширину и высоту. 3. Возле «синих» линий нарисуйте текстовое поле и закодируйте окончательную ширину и высоту. Цвет шрифта ширины - пурпурный, а цвета шрифта высоты - темно-синий.

Итак, по сути, я хочу аннотировать темно-синие линии, которые я нарисовал, с преобразованными шириной и высотой. Я предоставлю коэффициент пересчета в диалоговом окне ввода пользователя.

Любые предлагаемые функции или коды для начала? Я сделаю все возможное, чтобы погуглить остальное.

Большое спасибо! :)

1 Ответ

0 голосов
/ 06 октября 2018

Этот код требует некоторой отладки, но он дает вам представление о том, что вам может понадобиться. Вам может понадобиться проверить тип данных p и записать макрос добавления текстового поля, чтобы получить правильный linr. Определение переменной c отличается для более старых версий powerpoint. «c» затем делится на красный зеленый и синий, а темно-синий соответствует низким значениям красного и зеленого по сравнению с более высоким синим. Я не удосужился раскрасить текст в текстовых полях.

Dim h as shape
p=inputbox("Enter number",50,50)
for each h as activewindow.selection.sliderange.shapes
c = h.Line.ForeColor.RGB
redco = c Mod 256
greenco = c \ 256 Mod 256
blueco = c \ 65536 Mod 256
if redco<255/3 and greenco<255/3 and blueco>255/2 then
activewindow.selection.sliderange.shapes.Addtextbox("Arial",12,"Line Width=" & h.line.weight & "  Shape/line height=" & p * h.height & "    Shape/line width="  & p * h.width, h.left-50, h.top-50,80,80).select
End if
Next
...