Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / General PowerPoint Questions / October 2006

Tip: Looking for answers? Try searching our database.

Event Handler Problem

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Gil_H - 21 Oct 2006 17:32 GMT
Hi Ev1,
Iv'e Created an addin that uses a commandbar to open macros.
It works great on my computer and on another.
But in third computer it fails. It Loads the addin, presents the
toolbar with an error message:
"compile error in a hidden class"
What is hidden?
The class is attached? what error may be in my event handler class?
Here is the code:

Public WithEvents PPTEvent As Application
Dim Tmp As String
Dim MyShapes As Shapes
Dim CurrentSlide As Long
Dim EffectTypeStr As String
Dim i As Integer
Dim CopyAnimationSource As Shape
Dim CopyAnimationDest As Shape
Dim JoinMotionSource As Shape
Dim JoinMotionDest As Shape
Dim ShapeArray As Shapes
Dim MoveToSource As Shape
Dim MoveToDest As Shape
Dim PictureSource As Shape
Dim PictureDest As Shape
Dim ShapeToPolygon As Shape
Dim oShape As Shape
Dim Pos As Integer
Dim Res As Integer
Dim ToolbarIndex As Integer
'The Numbers that the command bar buttons got when toolbar initialized:
'ButtonShapeList = 1
'ButtonAnimationList = 2
'ButtonCopyAnimation = 3
'ButtonMotionPath = 4
'ButtonJoinMotionPaths = 5
'ButtonJoinMotionPathsFromCurrentPos = 6
'ButtonMoveTo = 7
'ButtonPictureCopy = 8
'ButtonPictureFromFile = 9
'ButtonShapeToPolygon = 10
Dim ButtonShapeList As CommandBarButton
Dim ButtonAnimationList As CommandBarButton
Dim ButtonCopyAnimation As CommandBarButton
Dim ButtonMotionPath As CommandBarButton
Dim ButtonJoinMotionPaths As CommandBarButton
Dim ButtonJoinMotionPathsFromCurrentPos As CommandBarButton
Dim ButtonMoveTo As CommandBarButton
Dim ButtonPictureCopy As CommandBarButton
Dim ButtonPictureFromFile As CommandBarButton
Dim ButtonShapeToPolygon As CommandBarButton

Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
'Setting The index Toolbar
ToolbarIndex = Module8.GetToolbarIndex

Start:
'Setting CommandBar Buttons
Set ButtonShapeList = Application.CommandBars(ToolbarIndex).Controls(1)
Set ButtonAnimationList =
Application.CommandBars(ToolbarIndex).Controls(2)
Set ButtonCopyAnimation =
Application.CommandBars(ToolbarIndex).Controls(3)
Set ButtonMotionPath =
Application.CommandBars(ToolbarIndex).Controls(4)
Set ButtonJoinMotionPaths =
Application.CommandBars(ToolbarIndex).Controls(5)
Set ButtonJoinMotionPathsFromCurrentPos =
Application.CommandBars(ToolbarIndex).Controls(6)
Set ButtonMoveTo = Application.CommandBars(ToolbarIndex).Controls(7)
Set ButtonPictureCopy =
Application.CommandBars(ToolbarIndex).Controls(8)
Set ButtonPictureFromFile =
Application.CommandBars(ToolbarIndex).Controls(9)
Set ButtonShapeToPolygon =
Application.CommandBars(ToolbarIndex).Controls(10)

   If Not Sel.Type = ppSelectionNone Then
       If Not Sel.ShapeRange.Count > 1 Then
       Res = vbFalse

       ButtonMoveTo.Enabled = True
       Tmp = Sel.ShapeRange.Type
       Tmp = Left(Tmp, 7)

       '************************** Pictures
Setup*****************************
       If Sel.Type = ppSelectionShapes And (Sel.ShapeRange.Type =
msoPicture _
       Or Tmp = "Picture") Then
           ButtonPictureCopy.Enabled = True
           ButtonPictureFromFile.Enabled = True
           Else
           ButtonPictureCopy.Enabled = False
           ButtonPictureFromFile.Enabled = False
       End If

       If ButtonPictureCopy.State = msoButtonUp Then
           Tmp = Sel.ShapeRange.Name
           ButtonPictureCopy.Enabled = True
           Set PictureSource = SetCopyAnimationSource(Tmp)
       Else
           ButtonPictureCopy.Enabled = False
       End If
       If ButtonPictureCopy.State = msoButtonDown Then
           Tmp = Sel.ShapeRange.Type
           Tmp = Left(Tmp, 7)
           If Sel.Type = ppSelectionShapes And (Sel.ShapeRange.Type =
msoPicture _
           Or Tmp = "Picture") Then
               Tmp = Sel.ShapeRange.Name
               Set PictureDest = SetCopyAnimationSource(Tmp)
               If Not PictureSource.Name = PictureDest.Name Then

                   ButtonPictureCopy.State = msoButtonUp
                   'Calling function to make the change
                   Res = Module6.PictureCopyProperties(PictureSource,
PictureDest)

                   Res = MsgBox("Make The Change?", vbOKCancel,
"Picture Copier")
                   If Res = vbOK Then

                       Set PictureSource = Nothing
                       Set PictureDest = Nothing
                       ButtonPictureCopy.State = msoButtonUp

ActivePresentation.Slides(CurrentSlide).Shapes(1).Select
                       GoTo Start
                   End If

               End If
           End If

           Set PictureSource = Nothing
           Set PictureDest = Nothing
           ButtonPictureCopy.State = msoButtonUp
       Else
           ButtonPictureCopy.State = msoButtonUp
       End If

       If Not Res = vbOK Then

       Tmp = Sel.ShapeRange.Name
       If Sel.ShapeRange.AutoShapeType = msoShapeRightTriangle Or
msoShapeDiamond _
       Or msoShapeRectangle Or msoShapeIsoscelesTriangle Then
           ButtonShapeToPolygon.Enabled = True
       Else
           ButtonShapeToPolygon.Enabled = False
       End If
       Tmp = Sel.ShapeRange.Name
       If IsShapeMotioned(Tmp) = 1 Then
           ButtonMotionPath.Enabled = True
           ButtonJoinMotionPaths.Enabled = True
           ButtonJoinMotionPathsFromCurrentPos.Enabled = True
       Else
           ButtonMotionPath.Enabled = False
           ButtonJoinMotionPaths.Enabled = False
           ButtonJoinMotionPathsFromCurrentPos.Enabled = False
       End If
       If ButtonJoinMotionPaths.State = msoButtonUp Then
           Tmp = Sel.ShapeRange.Name
           If IsShapeMotioned(Tmp) = 1 Then
               ButtonJoinMotionPaths.Enabled = True
               Set JoinMotionSource = SetCopyAnimationSource(Tmp)
           Else
               ButtonJoinMotionPaths.Enabled = False
           End If
       End If
       If ButtonJoinMotionPaths.State = msoButtonDown Then
           Tmp = Sel.ShapeRange.Name
           Set JoinMotionDest = SetCopyAnimationSource(Tmp)
           Pos = 1
           'Just to check if we succeded
           Res = Module5.InitializeMotion(JoinMotionSource,
JoinMotionDest, Pos)
           ButtonJoinMotionPaths.State = msoButtonUp
           Set JoinMotionSource = Nothing
           Set JoinMotionDest = Nothing
       Else
           ButtonJoinMotionPaths.State = msoButtonUp
       End If
       Tmp = Sel.ShapeRange.Name
       If ButtonMoveTo.State = msoButtonUp Then
           Set MoveToSource = SetCopyAnimationSource(Tmp)
       End If
       If ButtonMoveTo.State = msoButtonDown Then
           Tmp = Sel.ShapeRange.Name
           Set MoveToDest = SetCopyAnimationSource(Tmp)
           Res = MoveTo(MoveToSource, MoveToDest)
           ButtonMoveTo.State = msoButtonUp
           ButtonMoveTo.Enabled = False
           Set MoveToSource = Nothing
           Set MoveToDest = Nothing

       Else
           ButtonMoveTo.State = msoButtonUp
       End If
       If ButtonJoinMotionPathsFromCurrentPos.State = msoButtonUp Then
           Tmp = Sel.ShapeRange.Name
           If IsShapeMotioned(Tmp) = 1 Then
               ButtonJoinMotionPathsFromCurrentPos.Enabled = True
               Set JoinMotionSource = SetCopyAnimationSource(Tmp)
           Else
               ButtonJoinMotionPathsFromCurrentPos.Enabled = False
           End If
       End If
       If ButtonJoinMotionPathsFromCurrentPos.State = msoButtonDown
Then
           Tmp = Sel.ShapeRange.Name
           Set JoinMotionDest = SetCopyAnimationSource(Tmp)
           Pos = 0
           'Just to check if we succeded
           Res = Module5.InitializeMotion(JoinMotionSource,
JoinMotionDest, Pos)
           ButtonJoinMotionPathsFromCurrentPos.State = msoButtonUp
           Set JoinMotionSource = Nothing
           Set JoinMotionDest = Nothing
       Else
           ButtonJoinMotionPathsFromCurrentPos.State = msoButtonUp
       End If
       If ButtonCopyAnimation.State = msoButtonUp Then
           Tmp = Sel.ShapeRange.Name
           If IsShapeAnimated(Tmp) = 1 Then
               ButtonCopyAnimation.Enabled = True
               Set CopyAnimationSource = SetCopyAnimationSource(Tmp)
           Else
               ButtonCopyAnimation.Enabled = False
           End If
       End If
       If ButtonCopyAnimation.State = msoButtonDown Then
           Tmp = Sel.ShapeRange.Name
           Set CopyAnimationDest = SetCopyAnimationSource(Tmp)
           'Just to check if we succeded
           Res = Module2.Initialize(CopyAnimationSource,
CopyAnimationDest)
           ButtonCopyAnimation.State = msoButtonUp
           Set CopyAnimationSource = Nothing
           Set CopyAnimationDest = Nothing
       Else
           ButtonCopyAnimation.State = msoButtonUp
       End If

       End If 'Picture Selected Bug

       Else 'There are more than 1 Shapes selected
       ButtonPictureFromFile.Enabled = False
       ButtonMotionPath.Enabled = False
       ButtonShapeToPolygon.Enabled = False
       ButtonCopyAnimation.State = msoButtonUp
       ButtonCopyAnimation.Enabled = False
       ButtonJoinMotionPaths.State = msoButtonUp
       ButtonJoinMotionPaths.Enabled = False
       ButtonJoinMotionPathsFromCurrentPos.State = msoButtonUp
       ButtonJoinMotionPathsFromCurrentPos.Enabled = False
       ButtonMoveTo.State = msoButtonUp
       ButtonMoveTo.Enabled = False
       ButtonPictureCopy.State = msoButtonUp
       ButtonPictureCopy.Enabled = False

   End If
   Else 'There are No Shapes selected
       ButtonPictureFromFile.Enabled = False
       ButtonMotionPath.Enabled = False
       ButtonShapeToPolygon.Enabled = False
       ButtonCopyAnimation.State = msoButtonUp
       ButtonCopyAnimation.Enabled = False
       ButtonJoinMotionPaths.State = msoButtonUp
       ButtonJoinMotionPaths.Enabled = False
       ButtonJoinMotionPathsFromCurrentPos.State = msoButtonUp
       ButtonJoinMotionPathsFromCurrentPos.Enabled = False
       ButtonMoveTo.State = msoButtonUp
       ButtonMoveTo.Enabled = False
       ButtonPictureCopy.State = msoButtonUp
       ButtonPictureCopy.Enabled = False
   End If
End Sub

Function IsShapeMotioned(Tmp)
   IsShapeMotioned = 0
   If ActivePresentation.Windows(1).View.Type = ppViewNormal Then
   CurrentSlide = ActivePresentation.Windows(1).View.Slide.SlideIndex
       With ActivePresentation.Slides(CurrentSlide).TimeLine
           For i = 1 To .MainSequence.Count
               If .MainSequence(i).Shape.Name = Tmp Then
                   EffectTypeStr =
Module3.GetMSOAnimEffect(.MainSequence(i).EffectType)
                  EffectTypeStr = Replace(EffectTypeStr,
"msoAnimEffect", "")
                   EffectTypeStr = Left(EffectTypeStr, 4)
                   If (EffectTypeStr = "Path") Then
                      IsShapeMotioned = 1
                   End If
               End If
           Next
       End With
   End If
End Function

I really need your help!

Regards,
Gil H
Steve Rindsberg - 21 Oct 2006 19:50 GMT
> Hi Ev1,
> Iv'e Created an addin that uses a commandbar to open macros.
[quoted text clipped - 3 lines]
> "compile error in a hidden class"
> What is hidden?

What version of PPT is in use on the computer?
If it's PPT97, events aren't supported, so your code wouldn't work.

You're also working with animation properties that don't exist in versions
prior to 2002, so you'd get compile errors in 2000 as well.

> The class is attached? what error may be in my event handler class?
> Here is the code:
[quoted text clipped - 293 lines]
> Regards,
> Gil H

-----------------------------------------
Steve Rindsberg, PPT MVP
PPT FAQ:  www.pptfaq.com
PPTools:  www.pptools.com
================================================
Gil_H - 21 Oct 2006 21:58 GMT
Hi,
On all computers PPT 2003 was installed, so there is no problem with
animation and events object.
I've read about a Microsoft bug "CommandBar Control Reference Becomes
Invalid Before COM Add-In's OnDisconnection Event Fires" Article found
at http://support.microsoft.com/kb/230876/ , does it have any
connection with my problem?

I've checked the Class code for errors, and it compiled well. I'm lost.

Gil H.

Steve Rindsberg כתב:
> > Hi Ev1,
> > Iv'e Created an addin that uses a commandbar to open macros.
[quoted text clipped - 313 lines]
> PPTools:  www.pptools.com
> ================================================
Shyam Pillai - 22 Oct 2006 02:25 GMT
The article is only valid if you have a COM add-in. I don't think that's the
case with your add-in.

Create your add-in without password protection and then load it on the
computer where it fails and it will highlight the errant line.

Signature

Regards,
Shyam Pillai

Animation Carbon
http://www.animationcarbon.com

Hi,
On all computers PPT 2003 was installed, so there is no problem with
animation and events object.
I've read about a Microsoft bug "CommandBar Control Reference Becomes
Invalid Before COM Add-In's OnDisconnection Event Fires" Article found
at http://support.microsoft.com/kb/230876/ , does it have any
connection with my problem?

I've checked the Class code for errors, and it compiled well. I'm lost.

Gil H.

Steve Rindsberg ???:
> In article <1161448359.516425.151320@h48g2000cwc.googlegroups.com>, Gil_H
> wrote:
[quoted text clipped - 315 lines]
> PPTools:  www.pptools.com
> ================================================
Gil_H - 23 Oct 2006 16:03 GMT
Hi,

I tried to add the addin to the non-friendly computer (PPT 2003
installed), and there is no option that the errant line will be marked,
because there is no code in the addin, and there is no option to debug
it.
I get Errors of Compile Error in Hidden Class and Compile Error in
Module, and i can't understand where is the bug.

Any Other Suggetstions?

Gil H.
Steve Rindsberg - 23 Oct 2006 16:58 GMT
> I tried to add the addin to the non-friendly computer (PPT 2003
> installed), and there is no option that the errant line will be marked,
> because there is no code in the addin, and there is no option to debug
> it.

Do you mean that you can't *see* the add-in's code?

Have a look here:
http://officeone.mvps.org/vba/howto_get_vba_code_from_addin.html

Do that, start PPT on the problem machine, load your addin then try to compile.

> I get Errors of Compile Error in Hidden Class and Compile Error in
> Module, and i can't understand where is the bug.
>
> Any Other Suggetstions?
>
> Gil H.

-----------------------------------------
Steve Rindsberg, PPT MVP
PPT FAQ:  www.pptfaq.com
PPTools:  www.pptools.com
================================================
Gil_H - 23 Oct 2006 18:51 GMT
Hi,

Could it be that the reason for my Errors is Trying the addin on
different OS, PPT Ver, and SP?

Gil H.
Steve Rindsberg - 23 Oct 2006 22:07 GMT
> Hi,
>
> Could it be that the reason for my Errors is Trying the addin on
> different OS, PPT Ver, and SP?

Yes.  That's why I asked several messages ago about this and you replied:  "On
all computers PPT 2003 was installed, ..."

Let's start over.  Please tell us:

- What versions of PowerPoint you're getting errors with
- The *exact* wording of any and all error messages
- What line the code breaks on

Without that, we're just guessing.  That wastes your time and ours.  

-----------------------------------------
Steve Rindsberg, PPT MVP
PPT FAQ:  www.pptfaq.com
PPTools:  www.pptools.com
================================================
Gil_H - 24 Oct 2006 06:58 GMT
> - What versions of PowerPoint you're getting errors with
> - The *exact* wording of any and all error messages
> - What line the code breaks on

Hi, I tried to install the Addin again, this time on XP Pro SP2, PPT
2003 - similar to my OS and Version.
As i load the addin i get "Compile Error: Can't find project or
library" - i got to VBE Debugger and it lights the Left Function (That
belongs to String Manipulation) in some class.
And exact message i got from another module - this time on LoadPicture
Method.
I looked at the VBE References and one of the Ref is: "Missing:
Microsoft Common Dialog Control 6.0 (SP 3)".
What can solve this Reference lack?
What do you suggest?

Gil H.
Steve Rindsberg - 24 Oct 2006 20:19 GMT
> > - What versions of PowerPoint you're getting errors with
> > - The *exact* wording of any and all error messages
[quoted text clipped - 10 lines]
> Microsoft Common Dialog Control 6.0 (SP 3)".
> What can solve this Reference lack?

Are you actually using the Common Dialog Control?  From your code example, it
doesnt' seem so.  On your own computer, try using Tools, References and remove
the check next to the common dialog control reference.

Will it still compile after you do that?  If so, leave the project that way.

> What do you suggest?
>
> Gil H.

-----------------------------------------
Steve Rindsberg, PPT MVP
PPT FAQ:  www.pptfaq.com
PPTools:  www.pptools.com
================================================
Gil_H - 24 Oct 2006 21:59 GMT
> Are you actually using the Common Dialog Control?  From your code example, it
> doesnt' seem so.  On your own computer, try using Tools, References and remove
> the check next to the common dialog control reference.

Yes, I do. This common dialog control is used to open the common dialog
in one of my macros (modules). I tried to remove it and the macro
didn't open the common dialog.

I tested the addin on another computer (XP Pro Version 2002 SP 2, PPT
2003 - same as mine) and the addin worked great. Is there a way to make
it compatible with other computers?
Except that reference there is that Left function error. Which
reference is responsible for that function?

Gil H.
Austin Myers - 24 Oct 2006 23:00 GMT
Gil,

The common dialog control is installed with Visual Basic.  To use it on
other machines you will have to install it and register it.

Austin Myers
MS PowerPoint MVP Team

Provider of PFCMedia, PFCPro, PFCExpress
http://www.pfcmedia.com

>> Are you actually using the Common Dialog Control?  From your code
>> example, it
[quoted text clipped - 13 lines]
>
> Gil H.
Steve Rindsberg - 25 Oct 2006 02:15 GMT
> > Are you actually using the Common Dialog Control?  From your code example, it
> > doesnt' seem so.  On your own computer, try using Tools, References and remove
[quoted text clipped - 3 lines]
> in one of my macros (modules). I tried to remove it and the macro
> didn't open the common dialog.

The common dialog control isn't part of Office, so may not be present on the other
computer where this isn't working.  If you really need to use it, you'll have to
build an installer that installs and registers it on target machines.

For more about that, I'd ask on the newsgroup that supports whatever other
programming tool you have that includes the common dialog control (VB, etc).

Or visit sites like Randy Birch's
http://vbnet.mvps.org/

where you can get some first-rate examples of how to use the common dialog via win
api calls and avoid having to ship any controls.

> I tested the addin on another computer (XP Pro Version 2002 SP 2, PPT
> 2003 - same as mine) and the addin worked great. Is there a way to make
> it compatible with other computers?
> Except that reference there is that Left function error. Which
> reference is responsible for that function?

This?

          Tmp = Sel.ShapeRange.Type
           Tmp = Left(Tmp, 7)
           
Left (or Left$) return the leftmost n characters as a string.
You've set Tmp = a Long

> Gil H.

-----------------------------------------
Steve Rindsberg, PPT MVP
PPT FAQ:  www.pptfaq.com
PPTools:  www.pptools.com
================================================
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.