none
PowerPoint unsichtbar RRS feed

  • Frage

  • Hallo zusammen

    Ich mache eine Vorschau der ersten Seite einer Presentation als Image. Dies habe ich für Word, Excel und PowerPont gemacht. Sie funktionieran auch. Leider ist es aber so, dass PowerPoint sichtbar wird. Ich möchte PowerPont aber auch unsichtbar haben, wie es bei Word und Excel ist.

    Hier mein Code:

      Friend Shared Function Vorschau(ByVal fileName As String, ByVal handle As IntPtr) As Image
        Dim image As Image = Nothing

        Try
          Dim application As New Interop.PowerPoint.Application
          Dim document As Interop.PowerPoint.Presentation = application.Presentations.Open(fileName)

          Try
            Const CF_ENHMETAFILE As Integer = 14
            application.ActivePresentation.Slides(1).Select()
            application.ActiveWindow.Selection.Copy()

            Dim ip As IntPtr
            Dim metaFile As Metafile
            Dim bRet As Boolean = Generell.ClipboardAPI.OpenClipboard(handle)

            If bRet Then
              bRet = Generell.ClipboardAPI.IsClipboardFormatAvailable(CF_ENHMETAFILE) <> 0
            End If

            If bRet Then
              ip = Generell.ClipboardAPI.GetClipboardData(CF_ENHMETAFILE)
            End If

            If Not IntPtr.Zero.Equals(ip) Then
              metaFile = New System.Drawing.Imaging.Metafile(ip, True)
              Generell.ClipboardAPI.CloseClipboard()
              image = metaFile
            End If

          Finally
            application.Quit()
          End Try
        Catch ex As Exception
          'nichts tun
        End Try

        Return image
      End Function

     

    Die Zeile " Dim document As Interop.PowerPoint.Presentation = application.Presentations.Open(fileName)" öffnet leider PowerPoint sichtbar. applikation.Visible = false gibt es nicht und application.Visible = Core.MsoTriState.msoFalse bringt ein Fehler.

    Wie mache ich es also, dass PowerPont nicht sichtbar wird. Word und Excel bleibt ja auch unsichtbar, ausser man setzt application.Visible = true

    Vielen Dank für Eure Hilfe
    Gruss Marcel

    Freitag, 10. Juni 2011 07:00

Antworten

  • Oh Sorry :D

    Paar Kommas vergessen ^^

    Es ist der dritte Parameter (WithWindow) und nicht der erste

    Dim application As New Interop.PowerPoint.Application

      Dim document As New Interop.PowerPoint.Presentation = application.Presentations.Open(fileName, , , Microsoft.Office.Core.MsoTriState.msoFalse)


    Cheers, Jörn Bosse
    Microsoft Student Partner

    Freitag, 10. Juni 2011 07:57
  • Hallo Marcel,

     

    mit Selection sollte man generell nicht arbeiten. Ich würde dir empfehlen so zu arbeiten:

    document.Slides(1).Copy

     

    Du musst es vorher nicht selecten. Wenn Powerpoint nicht sichtbar ist kannst du eh nicht mit Select arbeiten.


    Cheers, Jörn Bosse
    Microsoft Student Partner
    Freitag, 10. Juni 2011 08:32

Alle Antworten

  • Hi,

    Dim application As New Interop.PowerPoint.Application

      Dim document As New Interop.PowerPoint.Presentation = application.Presentations.Open(fileName, Microsoft.Office.Core.MsoTriState.msoFalse)

     

    So sollte es gehen ;)

     


    Cheers, Jörn Bosse
    Microsoft Student Partner
    Freitag, 10. Juni 2011 07:40
  • Hallo Jörn

    Leider geht diese Version auch nicht. Ich solle vielleicht noch sagen, dass ich Office2010 und VisualStudio 2010 habe.

    Gruss Marcel

    Freitag, 10. Juni 2011 07:52
  • Oh Sorry :D

    Paar Kommas vergessen ^^

    Es ist der dritte Parameter (WithWindow) und nicht der erste

    Dim application As New Interop.PowerPoint.Application

      Dim document As New Interop.PowerPoint.Presentation = application.Presentations.Open(fileName, , , Microsoft.Office.Core.MsoTriState.msoFalse)


    Cheers, Jörn Bosse
    Microsoft Student Partner

    Freitag, 10. Juni 2011 07:57
  • Hallo Jörn

    Ja, das würde gehen. Leider bringt aber dann application.ActivePresentation.Slides(1).Select() einen unbekannten Fehler. Um meinem Beispiel geht er dann gleich nach Finnaly und es entsteht kein Image.

     

    evtl. müsste ich nun die erste Seite anders markieren.

    Gruss Marcel

    Freitag, 10. Juni 2011 08:21
  • Hallo Marcel,

     

    mit Selection sollte man generell nicht arbeiten. Ich würde dir empfehlen so zu arbeiten:

    document.Slides(1).Copy

     

    Du musst es vorher nicht selecten. Wenn Powerpoint nicht sichtbar ist kannst du eh nicht mit Select arbeiten.


    Cheers, Jörn Bosse
    Microsoft Student Partner
    Freitag, 10. Juni 2011 08:32
  • Hallo Jörn

    Ja, auf diese Weise funktioniert es einwandfrei. Vielen Dank

    Gruss Marcel

    Freitag, 10. Juni 2011 08:50
  • Super, gerne doch :)

    Freut mich das ich dir helfen konnte!

     

    Schöne Pfingsten!


    Cheers, Jörn Bosse
    Microsoft Student Partner
    Freitag, 10. Juni 2011 08:59