2017-08-28 12 views
0

我正在使用Excel,PowerPoint和Word OLE对象,我的目标是'悄然地'将文档转换为PDF。如何以编程方式打开一个新的'隐藏的'PowerPoint/Word/Excel窗口进行处理

目前,我有以下的非沉默方法:

Class PowerPointExporter 
    Sub Export(path As String, newPath As String) 
     Dim application As New PowerPoint.Application 
     Dim presentation As PowerPoint.Presentation = application.Presentations.Open(path) 
     presentation.SaveAs(newPath, PowerPoint.PpSaveAsFileType.ppSaveAsPDF) 
     presentation.Close() 
     application.Quit() 
    End Sub 
End Class 
Class ExcelExporter 
    Sub Export(path As String, newPath As String) 
     Dim application As New Excel.Application 
     Dim wb As Excel.Workbook = application.Workbooks.Open(path) 
     wb.SaveAs(newPath, Excel.XlFixedFormatType.xlTypePDF) 
     wb.Close() 
     application.Quit() 
    End Sub 
End Class 
Class WordExporter 
    Sub Export(path As String, newPath As String) 
     Dim application As New Word.Application 
     Dim doc As Word.Document = application.Documents.Open(path) 
     doc.SaveAs2(newPath, Word.WdSaveFormat.wdFormatPDF) 
     doc.Close() 
     application.Quit() 
    End Sub 
End Class 

所以我的问题是,如何才能让这些沉默? I.E.隐藏窗口/将窗口移出屏幕,或类似的?

回答

2

对于PowerPoint:

Set PPTObj = New PowerPoint.Application 
    If Debugging Then 
    Set PPTClinic = PPTObj.Presentations.Open(fileName:=PPTFileName, ReadOnly:=msoCTrue, WithWindow:=msoTrue) 'this will prevent the window from being visible 
    Else 
    Set PPTClinic = PPTObj.Presentations.Open(fileName:=PPTFileName, ReadOnly:=msoCTrue, WithWindow:=msoFalse) 'this will prevent the window from being visible 
    End If 

注意最后的WithWindow参数。

对于Excel:

Set XLobj = New Excel.Application 
    If Debugging Then 
    XLobj.Visible = True 
    Else 
    XLobj.Visible = False 
    End If 

我没有在Word中做任何事了相当多的时间,但它可能是类似的东西。我看看谷歌说...

啊,here它是字:

Application.Visible = False 

对不起,没有漂亮的例子刮起了 - 我把前两个从我现有的代码,最后一个刚刚从链接页面借用。

相关问题