Ваш код работает правильно, если Pptdoc
уже определен как слайд PowerPoint, как в примере ниже
Dim pp As PowerPoint.Application, pptdoc As Slide, pptLayout As CustomLayout
Set pp = CreateObject("PowerPoint.Application")
pp.Visible = True
'If you are creating a new Presentation and New slide the
pp.Presentations.Add
Set pptLayout = pp.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(1)
Set pptdoc = pp.ActivePresentation.Slides.AddSlide(1, pptLayout)
'If you are using an existing presentation then delete above 3 lines use the 2 lines below
'pp.Presentations.Open ("C:\users\User\desktop\test.pptm")
'Set pptdoc = pp.ActivePresentation.Slides(1)
Set Sh = pptdoc.Shapes.AddLabel(Orientation:=msoTextOrientationHorizontal, _
Left:=100, Top:=100, Width:=150, Height:=60)
Sh.TextFrame.TextRange.Text = Worksheets("Source").Range("D14").Value
Sh.TextFrame.TextRange.Font.Color = RGB(255, 100, 255)
Также всегда старайтесь добавлять библиотеку объектов Microsoft PowerPoint в ссылки на инструменты при работе с PowerPoint. Всегда безопасно использовать .Value
с диапазонами Excel, когда вы собираетесь писать только значения.