Я использую макросы для экспорта объектов в PowerPoint из Excel. У меня есть возможность выбрать, какую открытую презентацию я бы хотел экспортировать. Однако когда я переключаю презентации, есть ли способ остановить переключение фокуса из Excel в PowerPoint? Мой код ниже:Из Excel, как изменить активную презентацию PowerPoint без переключения фокуса?
Function SetActivePresentation(Filename As String) As Boolean
Dim i As Integer
' This just checks if PowerPoint is loaded - not needed for the question
If Me.Load = False Then
SetActivePresentation = False
End If
' Loop through the PowerPoint windows
For i = 1 To Me.pPowerpoint.Windows.Count
If Me.pPowerpoint.Windows(i).Presentation.name = Filename Then
Me.pPowerpoint.Windows(i).Activate
Exit For
End If
Next i
SetActivePresentation = True
End Function
и это pPowerPoint
метод в классе:
Public pPowerpoint As Object
Public Property Get PowerPoint() As Object
PowerPoint = pPowerpoint
End Property
и, наконец, моя функция нагрузки:
Function Load() As Boolean
On Error Resume Next
' Set the PowerPoint object
Set pPowerpoint = GetObject(Class:="PowerPoint.Application")
' Handle if the PowerPoint Application is not found
If Err.Number = 429 Then
GoTo ErrorHandler
End If
Load = True
Exit Function
ErrorHandler:
Load = False
End Function
Тогда из других в моем коде, и я может экспортировать объекты Excel путем циклического перехода по слайдам PowerPoint таким образом For Each slide In PowerPoint.pPowerpoint.ActivePresentation.Slides
, где PowerPoint
- мой класс PowerPoint, упомянутый выше.
, что вам нужно от 'switching',' Activating'? насколько я знаю, не требуется активировать PP для большинства действий. Что вы делаете в другой части кода? –
@KazimierzJawor, потому что тогда я могу вызвать объект ActivePresentation и экспортировать объекты Excel. –
Вы бы просто префикс pPowerpoint. –