[VB] PowerPoint presentatie starten en stoppen.

Pagina: 1
Acties:
  • 216 views sinds 30-01-2008
  • Reageer

  • GdeKeijzer
  • Registratie: Januari 2001
  • Laatst online: 12-06 10:50
Ik ben een beginnend VB-er omdat ik dit zuiver als hobby bij m'n W2000-beheer activiteiten doe.
Ik ben bezig met een programma te schrijven die PowerPoint presentaties kan weergeven en afbreken. Het moet eigenlijk een soort kabelkrant (voor een lokale ziekenomroep waar ik voor werk) worden welke op gezette tijden ook andere PPT's kan laten zien.
Het opstarten lukt me wel binnen VB, maar om deze weer af te sluiten en een volgende PPT te starten lukt niet (netjes).
Heeft iemand hier een idee voor of een andere (VB)oplossing ?

Helaas kan ik door HD-crash geen reeds gemaakte source laten zien. Moet dus opnieuw beginnen. Maar elke hulp is welkom.

Alvast vreselijk bedankt.

Niet omdat het moet, maar omdat het kan....


  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

Voeg een referentie naar MS Powerpoint object library en eentje voor de MS Office object library.

Maak een nieuwe form en pleur daar twee commandbuttons op.
Eentje noem je cmdStart en de andere noem je cmdAfsluiten.

Dan de volgende code intikken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Option Explicit

Dim oPP As PowerPoint.Application

Private Sub cmdAfsluiten_Click()
    oPP.SlideShowWindows(Index:=1).View.Exit
    oPP.Quit
    Set oPP = Nothing
End Sub

Private Sub cmdStart_Click()
    Set oPP = CreateObject("PowerPoint.Application")
    
    oPP.Activate
    Call oPP.Presentations.Open("D:\My Documents\Powerpoint.ppt", msoTrue)
    
    With oPP.ActivePresentation.SlideShowSettings
      .ShowType = ppShowTypeSpeaker
      .LoopUntilStopped = msoFalse
      .ShowWithNarration = msoTrue
      .ShowWithAnimation = msoTrue
      .RangeType = ppShowAll
      .AdvanceMode = ppSlideShowUseSlideTimings
      .PointerColor.SchemeColor = ppForeground
      .Run
    End With
End Sub

Get the idea?

edit:

Damn those typos

  • GdeKeijzer
  • Registratie: Januari 2001
  • Laatst online: 12-06 10:50
Is oPP.Quit verplicht of kan ik gewoon meteen een n
nieuwe PPT openen of blijft er dan iets openstaan ?

Hoe is overigens de overgang tussen 2 PPT's (als ik de start/stop code in een andere batch hang).

Ga dit trouwens ook even proberen.

Thanx

Niet omdat het moet, maar omdat het kan....


  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

De quit functie is om Powerpoint af te sluiten!!! Dan gaat de huidige presentatie dus ook weg. Als je een nieuwe presentatie wilt tonen terwijl powerpoint open is kun je het beste oPP.Presentations.Open functie gebruiken en dan die code tussen With ... End With gebruiken om hem meteen te runnen.

Probeer het maar eens. Dan wordt het allemaal veel duidelijker (hoop ik).

Suc6

  • GdeKeijzer
  • Registratie: Januari 2001
  • Laatst online: 12-06 10:50
Howdy.. hopelijk nog even wat hulp hier...

Presentatie runnen gaat nu prima, maar waar ik eigenlijk naar toe wil is een lijst (in ListBox) met presentaties en deze dan achter elkaar draaien en rouleren.

En op gezette tijden de presentatie onderbreken voor een tussenpresentatie (bv. aanvang live registratie)

Al deze moeite voor een zelfgemaakt kabelkrant systeem bij een ziekenomroep.

Hopelijk wat respons.. TIA

Niet omdat het moet, maar omdat het kan....


  • GdeKeijzer
  • Registratie: Januari 2001
  • Laatst online: 12-06 10:50
*schop* *D

Niet omdat het moet, maar omdat het kan....


  • Netman768
  • Registratie: Augustus 2001
  • Laatst online: 08-12-2025
het selecteren in een listbox kan zo:

met een listbox: List1,
een commandknop: CmdAdd,
code:
1
2
3
4
5
6
7
Private Sub CmdAdd_Click()
    List1.AddItem "Item"
End Sub

Private Sub List1_Click()
    MsgBox List1.ListIndex
End Sub

als je wil zien hoeveel items er in een listbox zijn:
code:
1
2
3
Private Sub CmdShow_Click()
    MsgBox List1.ListCount
End Sub

Als je een beetje probeert kan je met een timer het een voor een laten gebeuren. Ik probeer ff het een en ander. :)

  • Netman768
  • Registratie: Augustus 2001
  • Laatst online: 08-12-2025
Het duurde even, maar het is gelukt om een goed werkend programma te maken.

Doe van te voren het volgende:
maak in een directory de bestanden PP1.ppt, PP2.ppt, enz.
Start het programma
druk op CmdAdd het aantal keer dat er presentaties zijn.
klik in de listbox de presentatie om mee te beginnen.

voilat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Option Explicit
    Dim InList As Integer
    Dim InList2 As String
    Dim NewName As String
    Dim FileName As String
    Dim Presentation As Integer
    Dim oPP As PowerPoint.Application

Private Sub CmdAdd_Click()
    InList = List1.ListCount + 1
    InList2 = InList
    NewName = "PP" + InList2
    List1.AddItem NewName
End Sub

Private Sub CmdExit_Click()

Unload Me

End Sub

Private Sub Form_Load()

Presentation = 0

End Sub

Private Sub List1_Click()
    InList = List1.ListIndex + 1
    InList2 = InList
    FileName = TxtDir + "PP" + InList2 + ".ppt"

    timShow.Enabled = True
    Presentation = Presentation + 1
'copy paste van bovenstaand stuk

    Set oPP = CreateObject("PowerPoint.Application")
    
    oPP.Activate
    Call oPP.Presentations.Open(FileName, msoTrue)
    
    With oPP.ActivePresentation.SlideShowSettings
      .ShowType = ppShowTypeSpeaker
      .LoopUntilStopped = msoFalse
      .ShowWithNarration = msoTrue
      .ShowWithAnimation = msoTrue
      .RangeType = ppShowAll
      .AdvanceMode = ppSlideShowUseSlideTimings
      .PointerColor.SchemeColor = ppForeground
      .Run
    End With
End Sub

Private Sub timShow_Timer()

If List1.ListCount = InList Then
    oPP.SlideShowWindows(Index:=1).View.Exit
    oPP.Quit
    Set oPP = Nothing
    
    List1.ListIndex = 0
    List1_Click
    GoTo EndOfTimShow
End If
    
    Presentation = Presentation + 1

    InList = InList + 1
    InList2 = InList
    FileName = TxtDir + "PP" + InList2 + ".ppt"

Call oPP.Presentations.Open(FileName, msoTrue)
    With oPP.ActivePresentation.SlideShowSettings
      .ShowType = ppShowTypeSpeaker
      .LoopUntilStopped = msoFalse
      .ShowWithNarration = msoTrue
      .ShowWithAnimation = msoTrue
      .RangeType = ppShowAll
      .AdvanceMode = ppSlideShowUseSlideTimings
      .PointerColor.SchemeColor = ppForeground
      .Run
    End With

EndOfTimShow:

End Sub

wat doet het programma:
het zal de presentaties in de listbox (PP1.ppt, PP2.ppt, enz.) een voor een afspelen. Als het de lijst heeft afgespeeld sluit het alle geopende vensters en begint opnieuw

zoals je kan zien heb ik een gedeelte uit deze draad gebruikt. Ik schrijf nogal rommelige code, maarja...

Icq maar voor de exe en de soucecode mocht je dat willen. :)
Pagina: 1