Solved

Trapping a mouseclick and mousemove event in VB

Posted on 2008-10-23
8
340 Views
Last Modified: 2010-05-18
hi guys,
I want to identify column width change of a table in a macro .
for that  I want to trap a mouse click event on document without adding any content control.
Also  further i need to trap a mouse move event so please help me on that also.

If u know some better approach for this please do let me know.Thanks a lot in advance
0
Comment
Question by:swap811
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
8 Comments
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 22786403
There are no mouse methods exposed in Word VBA. The best I could suggest is to create a Class module and to test the width in the WindowSelectionChange event.

You will need a declaration such as this in the module:

Dim WithEvents wdApp As Word.Application

and you need to have set wdApp equal to the current Application during the session.

Set wdApp = Application
0
 

Author Comment

by:swap811
ID: 22793673
Sorry I am not getting how to use it.Can u please explain me in detail or if possible do send me some sample code .
0
 

Author Comment

by:swap811
ID: 22793934
This is what I have done .wordapp is declared global.please tell me how to link with the document as it is not working currently.


Dim WithEvents wdApp As Word.Application
Dim x As New Class1



Private Sub Class_Initialize()
Set wdApp = Word.Application
Set ThisDocument = ActiveDocument


MsgBox "testing1"



End Sub

Private Sub wdApp_DocumentOpen(ByVal Doc As Document)

Set wdApp = Word.Application


End Sub

Private Sub wdApp_NewDocument(ByVal Doc As Document)
 MsgBox "testing"
End Sub

Private Sub wdApp_Quit()

End Sub

Private Sub wdApp_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
MsgBox "testing"
End Sub

Private Sub wdApp_WindowSelectionChange(ByVal Sel As Selection)
    MsgBox "testing"
End Sub
0
Office 365 Training for Admins - 7 Day Trial

Learn how to provision tenants, synchronize on-premise Active Directory, implement Single Sign-On, customize Office deployment, and protect your organization with eDiscovery and DLP policies.  Only from Platform Scholar.

 
LVL 76

Expert Comment

by:GrahamSkan
ID: 22794557
I have tweaked your code a tiny bit.
'Put this code in a module and run it.
Sub Register_Event_Handler()
    Dim X As New Class1
 
    Set X.wdApp = Application
    MsgBox "wdApp events registered in: " & X.wdApp.Name
End Sub
 
'This is the code for the class module
 
Option Explicit
 
Public WithEvents wdApp As Word.Application
 
 
Private Sub wdApp_NewDocument(ByVal Doc As Document)
    MsgBox "testing"
End Sub
 
 
Private Sub wdApp_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
    MsgBox "testing"
End Sub
 
Private Sub wdApp_WindowSelectionChange(ByVal Sel As Selection)
    MsgBox "testing"
End Sub

Open in new window

0
 

Author Comment

by:swap811
ID: 22794655
it is giving error in module's code with the following line
Set X.wdApp = Application
    It is saying that wdApp member not found.I have added the module's code in newly created module.
Do u have any other better approach to the problem.please do let me know.
0
 

Author Comment

by:swap811
ID: 22794670
oh I had made 1 mistake. Now it is working.thanks a lot.Now my requirement is that when i open a word my macro should automatically start.please solve this problem also.Thanks again in advance
0
 
LVL 76

Accepted Solution

by:
GrahamSkan earned 500 total points
ID: 22794739
You can use a macro named AutoExec in a code module:
Sub AutoExec()
    Register_Event_Handler
End Sub

Open in new window

0
 

Author Comment

by:swap811
ID: 22794750
the windows events r not working still and that is what i need.what must I do for that.please do let me know
0

Featured Post

Supports up to 4K resolution!

The VS192 2-Port 4K DisplayPort Splitter is perfect for anyone who needs to send one source of DisplayPort high definition video to two or four DisplayPort displays. The VS192 can split and also expand DisplayPort audio/video signal on two or four DisplayPort monitors.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

With the internet and the ease of information transference, many professional jobs can be done anywhere today.  Why should it make a difference whether an x-ray is read in India or the United States as long as the radiologist is qualified?   Outso…
When asking a question in a forum or creating documentation, screenshots are vital tools that can convey a lot more information and save you and your reader a lot of time
The viewer will learn how to make their project stand out over others by learning how to change colors and shapes, add spaces, change directions, and add bullets to their charts.
This video walks the viewer through the process of creating Hyperlinks for the web and other documents. Select the "Insert" tab: Click "Hyperlink":  Type "http://" followed by a web address to reference a website or navigate to a document to ref…

617 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question