The Commands in the popup menu are disabled

U

Urpiano Cedazo

Hi all:

First of all, I must apologize for my poor English.

I have developed an Auto_Open macro that runs a slide show generating each
slide on run time reading the contents from an Excel book, in a non exit
loop. It works fine and I can stop the slide show with a right click and
executing "Stop slide show" (I'm not sure if this is the exact command name,
my PP is in Spanish).

When I save as addin and load the saved addin, the slide show starts with no
problem, but I can not stop the slide show with de "Stop slide show"
command, because de popup menu has all its commands disabled. Does anybody
knows how to change this behaviour?

TIA
 
U

Urpiano Cedazo

Hi:

I'd forgotten to said that PP is 2003 version. And here is the code:

Option Explicit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'Column constants
Public Const COL_HOTEL = "A"
Public Const COL_ESTRELLAS = "H"
Public Const COL_POBLACION = "B"
Public Const COL_PROVINCIA = "C"
Public Const COL_PAIS = "D"
Public Const COL_FECHAS = "E"
Public Const COL_TALONES = "F"
Public Const COL_REGIMEN = "G"


Sub Auto_Open()

Dim app_Excel As New Excel.Application
Dim wb_Libro As Excel.Workbook
Dim ws_Hoja As Worksheet
Dim lng_Linea As Long

Dim app_PowerPoint As New PowerPoint.Application
Dim pre_Ofertas As Presentation
Dim sld_Diapositiva As Slide
Dim str_Plantilla As String
Dim obj_FSO As New FileSystemObject

Dim str_Hotel As String, str_Estrellas As String, _
str_Poblacion As String, str_Provincia As String
Dim str_Pais As String, str_Fechas As String, _
str_Talones As String, str_Regimen As String
Dim str_EtiquetaTalones As String
Dim lng_ColorTalones As Long

On Error GoTo ctrl_Errores


' Get a reference to your add-in.
If AddIns.Count > 0 Then


With AddIns(AddIns.Count)

' Create the registry key in HKEY_CURRENT_USER.
.Registered = msoTrue

' Set the AutoLoad value in the registry.
.AutoLoad = msoTrue

' Makes sure that the add-in is loaded.
.Loaded = msoTrue

End With

End If

'The Excel worksheet has column headers, so the 1st line
'to read is the sheet's 2nd line
lng_Linea = 2

'Creating new presentation
Set pre_Ofertas = app_PowerPoint.Presentations.Add

'Adding a blank slide to the presentation
pre_Ofertas.Slides.Add 1, ppLayoutBlank

'Setting transition properties
With pre_Ofertas.Slides.Range.SlideShowTransition

.AdvanceTime = 5
.EntryEffect = ppEffectRandom

End With

'Setting Slide Show Settings and running it
With pre_Ofertas.SlideShowSettings

.Run
.AdvanceMode = ppSlideShowManualAdvance
.ShowWithAnimation = msoTrue

End With

'Hidding mouse cursor
pre_Ofertas.SlideShowWindow.View.PointerType = _
ppSlideShowPointerAlwaysHidden

Do

'Copyin Excel's workbook (this workbook has the data)
obj_FSO.CopyFile "\\server\folder\hotels.xls", _
"\\server\folder\hotels1.xls", True

'Opening the copy
Set wb_Libro = app_Excel.Workbooks.Open("\\server\folder\hotels1.xls", _
ReadOnly:=True)
Set ws_Hoja = wb_Libro.Worksheets(1)

'If the sheet's current line is blank then return to the 2nd line
If ws_Hoja.Range("A" & lng_Linea).Value = "" Then

lng_Linea = 2
GoTo NuevaVuelta

End If

'Reading the data and charging it onto variables
With ws_Hoja

str_Hotel = ws_Hoja.Range(COL_HOTEL & lng_Linea).Value
str_Estrellas = ws_Hoja.Range(COL_ESTRELLAS & lng_Linea).Value
str_Poblacion = ws_Hoja.Range(COL_POBLACION & lng_Linea).Value
str_Provincia = ws_Hoja.Range(COL_PROVINCIA & lng_Linea).Value
str_Pais = ws_Hoja.Range(COL_PAIS & lng_Linea).Value
str_Fechas = ws_Hoja.Range(COL_FECHAS & lng_Linea).Value
str_Talones = ws_Hoja.Range(COL_TALONES & lng_Linea).Value
str_Regimen = ws_Hoja.Range(COL_REGIMEN & lng_Linea).Value

'Setting plural or singular label
If CInt(str_Talones) = 1 Then

str_EtiquetaTalones = "Talón/Noche"

Else

str_EtiquetaTalones = "Talones/Noche"

End If

End With

'Closing workbook
wb_Libro.Close

'Deleting copy
obj_FSO.DeleteFile "\\server\folder\hotels1.xls", True

'Diferent colors in check number function
Select Case CInt(str_Talones)

Case 1 'Rosa

lng_ColorTalones = RGB(254, 194, 215)

Case 2 'Azul

lng_ColorTalones = RGB(184, 208, 246)

Case 3 'Amarillo

lng_ColorTalones = RGB(252, 254, 176)

Case 4 'Verde

lng_ColorTalones = RGB(146, 216, 136)

Case 5 'Naranja

lng_ColorTalones = RGB(247, 196, 105)

Case Else 'Blanco

lng_ColorTalones = RGB(255, 255, 255)

End Select

'Creating slide
Set sld_Diapositiva = ActivePresentation.Slides.Add(1, ppLayoutText)

'Applying template to the slide
sld_Diapositiva.ApplyTemplate "\\server\folder\hotels.pot"

'If there are three slide the 2dn will be deleted
If pre_Ofertas.Slides.Count > 2 Then ActivePresentation.Slides(2).Delete

'Writing data onto title
sld_Diapositiva.Shapes.Title.TextFrame.TextRange.Text = str_Hotel & " " & _
str_Estrellas & vbCrLf & _
str_Poblacion & " (" & _
str_Provincia & ") " & _
str_Pais & vbCrLf & _
str_Talones & " " & str_EtiquetaTalones

'Formatting tittle text
With sld_Diapositiva.Shapes(1).TextFrame.TextRange

.Characters(1, Len(str_Hotel & " " & str_Estrellas)).Font.Bold = msoTrue
.Characters(Len(str_Hotel) + 2, Len(str_Estrellas)).Font.Name = "Wingdings 2"
.Characters(Len(str_Hotel) + 2, Len(str_Estrellas)).Font.Color.RGB = RGB(255, 230, 0)
.Characters(Len(str_Hotel & " " & str_Estrellas) + 1, _
Len(sld_Diapositiva.Shapes(1).TextFrame.TextRange.Text)).Font.Bold = msoFalse
.Characters(Len(.Text) - Len(str_Talones & " " & str_EtiquetaTalones) + 1, _
Len(str_Talones & " " & str_EtiquetaTalones)).Font.Color.RGB = lng_ColorTalones
.Characters(Len(.Text) - Len(str_Talones & " " & str_EtiquetaTalones) + 1, _
Len(str_Talones & " " & str_EtiquetaTalones)).Font.Bold = msoTrue

End With

'Writing data onto text and formatting it
With sld_Diapositiva.Shapes(2).TextFrame.TextRange

.Text = "Fechas: " & str_Fechas & vbCrLf & _
"Régimen: " & str_Regimen

.Characters(Len("Fechas: ") + 1, Len(str_Fechas)).Font.Bold = msoTrue
.Characters(Len("Fechas: ") + Len(str_Fechas) + Len("Régimen: ") + 2, _
Len(str_Regimen)).Font.Bold = msoTrue

End With

'Moving to the created slide
pre_Ofertas.SlideShowSettings.Run.View.GotoSlide 1

'Waiting 20 seconds
DoEvents
Sleep 20000

'Seeking if the slide show is ended
If Not pre_Ofertas.SlideShowWindow.View.State = ppSlideShowRunning Then

pre_Ofertas.SlideShowWindow.View.Exit

FinDePresentacion:

pre_Ofertas.Slides(1).Delete
pre_Ofertas.Close
Exit Do

End If

'Adding 1 to the worksheet line counter
lng_Linea = lng_Linea + 1

NuevaVuelta:

Loop


FinDeProcedimiento:

'Quitting and emptying
Set ws_Hoja = Nothing
Set wb_Libro = Nothing
app_Excel.Quit
Set app_Excel = Nothing
Set obj_FSO = Nothing
app_PowerPoint.Quit
Set app_PowerPoint = Nothing
Exit Sub

ctrl_Errores:

If Err.Number = 1004 Then

pre_Ofertas.SlideShowWindow.View.Exit

ElseIf Err.Number = -2147188160 Then

Resume FinDePresentacion

Else

MsgBox Err.Number & ": " & Err.Description, vbOKOnly, "bas_Ventas.Auto_Open"

End If

Resume FinDeProcedimiento

End Sub





--
Un Saludo
Urpiano Cedazo





Y fue Urpiano Cedazo ([email protected]) quien en el mensaje [email protected], planeando sobre su teclado, hizo un picado y tecleó:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top