VBA PowerPoint устанавливает переменную в ноль - PullRequest
0 голосов
/ 08 января 2019

У меня вопрос по поводу следующего кода. Код теперь работает, но не работал, пока я не установил переменные в ноль (см. Часть с *** в коде). Я получаю все виды сообщений об ошибках (например, «462 Удаленный сервер не существует или недоступен»)

Мой вопрос: почему я должен устанавливать эти переменные в ноль? Я думаю, это как-то связано с тем, что я использую цикл, верно?

Заранее спасибо!

Sub Saveas_PDF() 
Dim PP As PowerPoint.Presentation
Dim prs As PowerPoint.Presentation
Dim Sl As PowerPoint.Slide
Dim sh As Variant
Dim company As String
Set Dropdown.ws_company = Tabelle2
company = Dropdown.ws_company.Range("C2").Value

Dim strPOTX As String
Dim strPfad As String
Dim pptApp As Object

Call filepicker

Dim Cell As Range

For Each Cell In Dropdown.ws_company.Range(Dropdown.ws_company.Cells(5, 3), 
Dropdown.ws_company.Cells(Rows.Count, 
3).End(xlUp)).SpecialCells(xlCellTypeVisible)

 Dropdown.ws_company.Range("C2") = Cell

 Set pptApp = New PowerPoint.Application

 Dim pptVorlage As String
 pptVorlage = myfilename


 Set PP = pptApp.Presentations.Open(pptVorlage)



 PP.UpdateLinks 'Datei --> Informationen --> Verknüpfungen --> Automatisch 
 aktualisieren Haken setzen

 Dim newpath As String
 newpath = Replace(myfilename, "AXO", "" & Cell & " AXO")

 Dim newpathpdf As String
 newpathpdf = Replace(newpath, "pptx", "pdf")


 PP.ExportAsFixedFormat "" & newpathpdf & "", ppFixedFormatTypePDF, 
 ppFixedFormatIntentPrint


 pptApp.Visible = True

 Debug.Print (PP.Name)
 AppActivate (PP.Name)

 PP.Close

***Set pptApp = Nothing
Set PP = Nothing***

Next

Set pptApp = New PowerPoint.Application
If IsAppRunning("PowerPoint.Application") Then
  If pptApp.Windows.Count = 0 Then

    pptApp.Quit
  End If
End If
End Sub

1 Ответ

0 голосов
/ 08 января 2019

Возможно, потому что вы вызываете конструктор "New" внутри цикла de в строке: Set pptApp = New PowerPoint.Application

Переместите строку «Set pptApp = New PowerPoint.Application» перед де foreach и попробуйте.

...