Ранее сегодня у меня была ошибка времени выполнения 448 (именованный объект не найден) со следующим кодом, написанным в Excel:
Sub PPTextbox()
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Dim mySlide As Object
Dim DestinationPPT As String
Set PowerPointApp = CreateObject("PowerPoint.Application")
DestinationPPT = "H:\VBA\Kapitalanlageplanung - Präsentationen\Monatsbericht\MonatsberichtTemplate.pptm"
Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT)
Set mySlide = myPresentation.Slides.Add(myPresentation.Slides.Count + 1, 12)
mySlide.Shapes.AddTextbox(Type:=msoTextOrientationHorizontal, Left:=100, Top:=100, Width:=200, Height:=50).TextFrame.TextRange.Text = "Test Box"
End Sub
Оказывается, проблема была Type:=msoTextOrientationHorizontal
, заменив ее напростой 1
сделал свое дело.
Этот комментарий, который я нашел дал мне решение.Теперь я знаю, что использовал позднюю привязку, объявив mySlide
как Объект.Теперь я знаю, что это неэффективно и, очевидно, может привести к некоторым проблемам, с которыми я столкнулся.Но почему?Есть ли какая-то логика за этим или я просто должен признать, что «некоторые константы VBA не распознаются, и они рассматриваются как переменные» при позднем связывании?Кроме того, это случайное вхождение, потому что точно такой же код работал раньше?