【发布时间】:2019-06-02 16:04:16
【问题描述】:
我对以下代码有疑问。代码现在可以工作,但直到我将变量设置为空(请参阅代码中带有 *** 的部分)。我收到各种错误消息(例如“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
【问题讨论】:
-
在为 cmets 发布代码时,使用缩进 总是很有用的,因此更容易了解正在发生的事情。不使用缩进有点像没有标点或段落的写作。
-
不需要每次循环都创建一个新的PPT应用程序——在进入循环之前创建一个实例,然后在循环完成后退出该实例。
-
您好,蒂姆,感谢您的回复。我使用了一些缩进让代码更容易阅读
-
创建一个实例听起来不错,但我不知道该怎么做。你能给我一个提示吗?还有创建一个新的 PPT 应用程序的问题吗? (只是想了解错误背后的逻辑)
标签: vba loops powerpoint