Цель кода: если PowerPoint открыт и поиск по умолчанию открыт, а затем обновите его. Если презентация закрыта, откройте ее. Если PowerPoint закрыт, создайте новый экземпляр.Ошибка Excel VBA 467 при попытке открыть презентацию PowerPoint
Ошибка: после того, как несколько пользователей побежали на на Mulitple компьютеров за последние 2 недели, сегодня один из пользователей получают следующее сообщение об ошибке:
Run-Time Error 467: Машина удаленного сервера не существует или недоступен
код строки highlightned режим отладки:
Set ppPres = ppProgram.Presentations.Item(i)
Соответствующий раздел модуля Кодекса:
Public Sub UpdatePowerPoint(PowerPointFile)
Dim ppProgram As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppFullPath As String
Dim ppName As String
Dim activeSlide As PowerPoint.Slide
Dim cht As Excel.ChartObject
Dim myShape As Object
Dim myChart As Object
Dim SlideNum, GPLRank As Integer
Dim ShapeNum As Integer
Dim shapeStageStat As Shape
On Error Resume Next
Set ppProgram = GetObject(, "PowerPoint.Application")
On Error GoTo 0
ppFullPath = PowerPointFile
PPT_Export_Success = True
' check if PowerPoint instance is open
If ppProgram Is Nothing Then
Set ppProgram = New PowerPoint.Application
i = 1
Else
If ppProgram.Presentations.count > 0 Then
ppName = Mid(ppFullPath, InStrRev(ppFullPath, "\") + 1, Len(ppFullPath))
i = 1
ppCount = ppProgram.Presentations.count
Do Until i = ppCount + 1
If ppProgram.Presentations.Item(i).Name = ppName Then
Set ppPres = ppProgram.Presentations.Item(i)
GoTo OnePager_Pres_Found
Else
i = i + 1
End If
Loop
End If
End If
ppProgram.Presentations.Open Filename:=PowerPointFile
' *** Getting the ERROR at the line below ***
Set ppPres = ppProgram.Presentations.Item(i)
OnePager_Pres_Found:
ppPres.Windows(1).Activate ' activate the One-Pager Presentation in case you have several open, and the One_pager is currently not the app "on-focus"
' --- Added Class script to allow PowerPoint ScreenUpdating set to FALSE ---
Dim myClass_PPT As Class_PPT
Set myClass_PPT = New Class_PPT
myClass_PPT.ScreenUpdating = False
' loop through all PowerPoint Slides, and copy all Chart objects from Excel
For ProjectCounter = 0 To NumberofProjectShts
' copying charts, shapes and other objects
Next ' ProjectCounter = 0 To NumberofProjectShts
AppActivate ("Microsoft PowerPoint")
Set activeSlide = Nothing
Set ppPres = Nothing
Set ppProgram = Nothing
End Sub
У меня ничего нет. Я получаю сообщение об ошибке при попытке открыть файл с новым экземпляром Power Point, но 'ppProgram.Visible = msoTrue' исправил его. Я не вижу ничего, что могло бы вызвать ошибку. Могли ли вы воспроизвести ошибку? –
@ThomasInzina нет, я запускал его более 100 раз на моем ПК, но ничего, онл 1 пользователь получил его. Мне было интересно, писать ли об этом сообщении об ошибке? –
Если это случится, возможно, еще немного времени. Проблема в том, что сервер существует вне VBA. Я столкнулся с чем-то похожим добавлением и ссылкой на OLEObjects на рабочий лист. Сервер OLEObjects не будет освобождать объекты после завершения моего макроса. Мне пришлось использовать Application.OnTime для вызова моей следующей процедуры миллисекунд после завершения моего макроса. –