VBA: значения ячейки Excel, записанные в Ovals в Powerpoint

Я пытаюсь добавить текст в несколько овалов (формы, которые уже созданы и расположены) в PowerPoint. Значения читаются из Excel. Также я хотел бы изменить цвет фигур в PowerPoint: если значение> 0, оно должно быть зеленым, а если оно <0, оно должно быть красным. Я пытаюсь это сделать, но сталкивается с ошибками. Любая помощь будет высоко оценена. Сначала я делаю Alt-H, S, L, P и дважды нажимаю на имена, чтобы изменить их на Oval11, Oval12 и т. Д.

Версия: Excel2010, PowerPoint2010

'Code starts Sub AutomateMIS() 'Declare variables Dim oPPTApp As PowerPoint.Application Dim oPPTFile As PowerPoint.Presentation Dim oPPTShape As PowerPoint.Shape Dim oPPTSlide As PowerPoint.Slide Dim SlideNum As Integer 'Instatntiate Powerpoint and make it visble Set oPPTApp = CreateObject("PowerPoint.Application") oPPTApp.Visible = msoTrue 'Opening an existing presentation Set oPPTFile = oPPTApp.Presentations.Open(Filename:=ThisWorkbook.Path & "\" & "MIS.pptx") 'Some Code before this SlideNum=1 i=3 'Update Ovals on next slide Set oPPTShape = oPPTFile.Slides(SlideNum + 1).Shapes("Oval11") oPPTShape.TextFrame.TextRange.Text = c.Offset(, 5).Value Set oPPTShape = oPPTFile.Slides(SlideNum + 1).Shapes("Oval12") oPPTShape.TextFrame.TextRange.Text = c.Offset(, 7).Value Set oPPTShape = oPPTFile.Slides(SlideNum + 1).Shapes("Oval" & (i + 1) & "3") oPPTShape.TextFrame.TextRange.Text = c.Offset(, 8).Value Set oPPTShape = oPPTFile.Slides(SlideNum + 1).Shapes("Oval" & (i + 1) & "4") oPPTShape.TextFrame.TextRange.Text = c.Offset(, 9).Value End Sub 

    Да, включая форму в группе, вызывает ошибку. Вы можете разгруппировать фигуры или использовать функцию, чтобы вернуть ссылку на нужную форму, даже если она находится в группе:

     Function ShapeNamed(sName As String, oSlide As Slide) As Shape Dim oSh As Shape Dim x As Long For Each oSh In oSlide.Shapes If oSh.Name = sName Then Set ShapeNamed = oSh Exit Function End If If oSh.Type = msoGroup Then For x = 1 To oSh.GroupItems.Count If oSh.GroupItems(x).Name = sName Then Set ShapeNamed = oSh.GroupItems(x) End If Next End If Next End Function Sub TestItOut() Dim oSh as Shape Set oSh = ShapeNamed("Oval 5", ActivePresentation.Slides(1)) If not oSh is Nothing Then If ValueFromExcel < 0 then oSh.Fill.ForeColor.RGB = RGB(255,0,0) Else oSh.Fill.ForeColor.RGB = RGB(0,255,0) End if End If End Sub 
    Interesting Posts

    Как в VBA установить диапазон на каждом листе Excel для копирования незащищенных ячеек в одно и то же в книге 2

    Трудная формула vlookup, использующая значение ячейки и подстановочные знаки

    OleDb Connection не считывает все строки из файла excel

    Как заблокировать файл csv с помощью C #? V2

    Кратковременная макрокоманда VBA

    Создать CSV-файл из данных Excel для каждого отдельного значения в столбце?

    Laravel / PHP Excel получает строки до тех пор, пока не вернет пустой массив

    Загрузка большого количества изображений с клиентской машины на сервер в ASP.NET MVC

    Отправить данные в HTTP Post из VBA Excel для Mac

    Как выполнить операцию excel через Python?

    выберите, на какую учетную запись отправить адрес электронной почты Outlook?

    Как автоматизировать обновление листа Excel из папки в Dropbox?

    Ссылаясь на Рабочую книгу / Рабочую таблицу с именами переменных

    Excel – найти значение в двух измерениях

    выберите все непустые строки и ячейки с помощью VBA

    Давайте будем гением компьютера.