Seite 1 von 3

Text aus Powerpoint auslesen

Verfasst: 20.11.2008 14:17
von saimen
ich brauche eine Funktion mit der ich den Text einer Powerpoint Datei auslesen kann um ihn dann als txt abzuspeichern und weiter bearbeiten zu können.
Gibts da vielleicht eine Lib oder hat sich schonmal jemand mit dem Thema beschäftigt?
Es gibt schon Programme die von ppt nach txt konvertieren. Ich würde meinem Kunden diese Funktion aber gerne selber anbieten können.

Ich arbeite mit PB 3.94

Re: Text aus Powerpoint auslesen

Verfasst: 20.11.2008 14:20
von Kiffi
saimen hat geschrieben:ich brauche eine Funktion mit der ich den Text einer Powerpoint Datei auslesen kann um ihn dann als txt abzuspeichern und weiter bearbeiten zu können.
sollte mit COMate kein Problem sein.

Hast Du evtl. ein VB-Schnippselchen, das sowas kann? Dann könnte man es
u.U. relativ einfach nach PB übersetzen.
saimen hat geschrieben:Ich arbeite mit PB 3.94
oh, schlechte Karten! Allerdings kannst Du mit der aktuellen Version (4.2)
eine DLL erstellen, in der Du dann die Funktionalitäten Deinem 3.94er -
Code zu Verfügung stellen kannst.

Grüße ... Kiffi

Verfasst: 21.11.2008 08:52
von saimen
kannst du mir vielleicht noch erklären was COMate ist? Sorry, aber ich hab leider nicht so viel zeit in die Tiefe einzusteigen, würde mich freuen wenn du mich da jetzt noch mehr Unterstützen würdest :)
Also VB benutze ich nicht, hab also auch keinen schnippsel.

Hab Comate jetzt runtergeladen. Aber wie kann ich das ins 4.2 einbauen und funktionen für powerpointdateien nutzen?

Simon

Verfasst: 21.11.2008 09:36
von saimen
hier hab ich was gefunden um in VB eine pdf in txt auszulesen:

http://www.wbrnet.info/db/1351.html

Verfasst: 21.11.2008 10:53
von Kiffi
saimen hat geschrieben:hier hab ich was gefunden um in VB eine pdf in txt auszulesen:
... und hier die (in der Funktionalität leicht abgeänderte) PB-Version:

Code: Alles auswählen

IncludePath #PB_Compiler_Home + "comate"

XIncludeFile "comate.pbi"

EnableExplicit

Procedure.s PPT2TXT(PPTFile.s)
  
  Protected oApp.COMateObject  ; Application
  Protected oPres.COMateObject ; Presentation
  
  Protected oSlides.COMateEnumObject ; Slides
  Protected oShapes.COMateEnumObject ; Shapes
  
  Protected oSld.COMateObject ; Slide Object
  Protected oShp.COMateObject ; Shape Object
  
  Protected ReturnString.s
  
  oApp = COMate_CreateObject("PowerPoint.Application")
  
  If oApp
    
    PPTFile = ReplaceString(PPTFile, "'", "$0027")
    
    oPres = oApp\GetObjectProperty("Presentations\Open('" + PPTFile + "', #Optional, #Optional, #False)")
    
    If oPres
      
      oSlides = oPres\CreateEnumeration("Slides")
      
      If oSlides
        
        oSld = oSlides\GetNextObject()
        
        While oSld
          
          oShapes = oSld\CreateEnumeration("Shapes")
          
          If oShapes
            
            oShp = oShapes\GetNextObject()
            
            While oShp
              
              If oShp\GetIntegerProperty("HasTextFrame")
                If oShp\GetIntegerProperty("TextFrame\HasText")
                  ReturnString + oShp\GetStringProperty("TextFrame\TEXTRANGE")
                EndIf
              EndIf
              
              oShp\Release()
              oShp = oShapes\GetNextObject()
              
            Wend
            
            oShapes\Release()
            
            oSld\Release()
            oSld = oSlides\GetNextObject()
            
          EndIf
          
          oSlides\Release()
          
        Wend 
        
      EndIf 
      
      oPres\Invoke("Close")
      oPres\Release()
      
    Else ; !oPres
      
      Debug "!oPres"
      Debug COMate_GetLastErrorDescription()
      
    EndIf ; oPres
    
    oApp\Invoke("Quit")
    oApp\Release()
    
  Else ; !oApp
    
    Debug "!oApp"
    Debug COMate_GetLastErrorDescription()
    
  EndIf ; oApp
  
  ProcedureReturn ReturnString
  
EndProcedure
  
Debug PPT2TXT("C:\Programme\Microsoft SDKs\Windows\v6.1\Samples\winui\Shell\AppPlatform\SearchFolder\TractatosUrbanitas.ppt")
Grüße ... Kiffi

Verfasst: 21.11.2008 18:24
von saimen
folgende Meldung bekam ich im Debugger:
!oApp
Invalid progID/CLSID. Check your spelling of the programmatic identifier. Also check that the component / ActiveX control has been registered.

Verfasst: 21.11.2008 19:12
von Kiffi
saimen hat geschrieben:folgende Meldung bekam ich im Debugger:
Du hast aber schon PowerPoint installiert, oder?

Grüße ... Kiffi

Verfasst: 21.11.2008 19:29
von saimen
nein. Ok, dann is klar...

Verfasst: 21.11.2008 19:56
von Kiffi
saimen hat geschrieben:nein.
das ist dann insofern schlecht, als das Du den Code nicht an Deine
Bedürfnisse anpassen und testen kannst.

Bei Deinen Kunden wird der Code (eine PP-Installation vorausgesetzt)
laufen.

Ich kenne das PPT-Format nicht sonderlich gut, aber ich nehme an, dass
es genauso gut bzw. schlecht dokumentiert ist, wie die anderen Formate
aus dem Microsoft-Office-Paket (MDB, XLS, DOC, etc.).

PPT ohne COM auszulesen artet dann meist in Bit-Popeleien aus. Auf
http://www.wotsit.org findest Du zumindest die (IMO schlechte) Doku zu
PPT97. Vielleicht kannst Du damit was anfangen.

Wie das mit neueren PPT-Versionen (2000, XP, 2003, 2007 und
nachfolgende) aussieht, kann ich Dir nicht sagen.

Grüße ... Kiffi

Verfasst: 22.11.2008 12:38
von saimen
ok, vielen dank. Ich werd mich damit mal auseinandersetzen...