Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default How can I catch a Paste action and default it to PasteSpecial-Values


Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine to
handle the situations.

thanks
Vasu


--
srinu1264
------------------------------------------------------------------------
srinu1264's Profile: http://www.excelforum.com/member.php...o&userid=34155
View this thread: http://www.excelforum.com/showthread...hreadid=544626

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default How can I catch a Paste action and default it to PasteSpecial-Valu

There is no direct support for it in Excel VBA or its event model.

You might be able to kludge something together with change and
selectionchange events, checking the value of application.CutCopyMode.

--
Regards,
Tom Ogilvy


"srinu1264" wrote:


Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine to
handle the situations.

thanks
Vasu


--
srinu1264
------------------------------------------------------------------------
srinu1264's Profile: http://www.excelforum.com/member.php...o&userid=34155
View this thread: http://www.excelforum.com/showthread...hreadid=544626


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 718
Default How can I catch a Paste action and default it to PasteSpecial-Values

Here is one solution, catching all possibilities of Pasting.
To enable special pasting, run SetMyPaste
To reset to normal pasting, run: ResetMyPaste

HTH
--
AP

'------------------------
Option Explicit

Sub SetMyPaste()
SetAllPaste (True)
End Sub

Sub ResetMyPaste()
SetAllPaste (False)
End Sub

Private Sub SetAllPaste(bSet As Boolean)
Dim aCb As Variant
Dim iCb As Integer
aCb = Array("Standard", "Edit", "Cell")
For iCb = LBound(aCb) To UBound(aCb)
setPaste aCb(iCb), bSet
Next iCb
If bSet Then
Application.OnKey "^v", "MyPaste"
Else
Application.OnKey "^v"
End If
End Sub

Private Sub setPaste(sCb As Variant, bSet As Boolean)
Const iIdPaste = 22
Dim cbcControl As CommandBarControl
For Each cbcControl In CommandBars(sCb).Controls
With cbcControl
If .ID = iIdPaste Then
If bSet Then
.OnAction = "MyPaste"
Else
.Reset
End If
Exit For
End If
End With
Next cbcControl
End Sub

Private Sub MyPaste()
If Application.CutCopyMode Then
Selection.PasteSpecial Paste:=xlPasteValues
End If
End Sub
'-------------------------------

"srinu1264" a écrit
dans le message de news:
...

Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine to
handle the situations.

thanks
Vasu


--
srinu1264
------------------------------------------------------------------------
srinu1264's Profile:
http://www.excelforum.com/member.php...o&userid=34155
View this thread: http://www.excelforum.com/showthread...hreadid=544626



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default How can I catch a Paste action and default it to PasteSpecial-Values


hi Vasu,

This is just an fyi as it looks like Ardus has provided what you were
after.

[alt + t + c], choose Commands tab & "Edit" category & you can drag the
"paste values" button onto a toolbar & then use this. Problem is that
this only works if the user wants to play ball!
Of course, education of the user wrt this option could be used in
conjunction with Ardus's option.

Rob Brockett
NZ
Always learning & the best way to learn is to experience...


--
broro183
------------------------------------------------------------------------
broro183's Profile: http://www.excelforum.com/member.php...o&userid=30068
View this thread: http://www.excelforum.com/showthread...hreadid=544626

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default How can I catch a Paste action and default it to PasteSpecial-Values

Not sure if any use but you can catch the paste menu click before it does
the paste

' normal module

Dim clsPasteEvnt As New Class1 ' suggest rename Class1

Sub SetPasteEvent()
'call from say Workbook_Activate and/or an Open event

Set clsPasteEvnt.ctrPaste = Application.CommandBars.FindControl(ID:=22)
End Sub

' in a class named Class1
' this won't work in XL97
Public WithEvents ctrPaste As Office.CommandBarButton

Private Sub ctrPaste_Click(ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean)

If TypeName(Selection) = "Range" Then

Debug.Print Selection.Address

End If
End Sub

Maybe one of the Clipboard API gurus can catch the clipboard contents in
this event and/or with Ardus' suggestion (Ctrl-V ?).

Regards,
Peter T


"srinu1264" wrote
in message ...

Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine to
handle the situations.

thanks
Vasu


--
srinu1264
------------------------------------------------------------------------
srinu1264's Profile:

http://www.excelforum.com/member.php...o&userid=34155
View this thread: http://www.excelforum.com/showthread...hreadid=544626





  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default How can I catch a Paste action and default it to PasteSpecial-Values

A bit more to play with -

Public WithEvents ctrPaste As Office.CommandBarButton

Private Sub ctrPaste_Click(ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean)
Dim vaFmts, vFrmt

vaFmts = Application.ClipboardFormats

If TypeName(Selection) = "Range" Then
For Each vFrmt In vaFmts
If vFrmt = xlClipboardFormatRTF Then
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End If
Next
End If
End Sub

Regards,
Peter T


"Peter T" <peter_t@discussions wrote in message
...
Not sure if any use but you can catch the paste menu click before it does
the paste

' normal module

Dim clsPasteEvnt As New Class1 ' suggest rename Class1

Sub SetPasteEvent()
'call from say Workbook_Activate and/or an Open event

Set clsPasteEvnt.ctrPaste = Application.CommandBars.FindControl(ID:=22)
End Sub

' in a class named Class1
' this won't work in XL97
Public WithEvents ctrPaste As Office.CommandBarButton

Private Sub ctrPaste_Click(ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean)

If TypeName(Selection) = "Range" Then

Debug.Print Selection.Address

End If
End Sub

Maybe one of the Clipboard API gurus can catch the clipboard contents in
this event and/or with Ardus' suggestion (Ctrl-V ?).

Regards,
Peter T


"srinu1264" wrote
in message ...

Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine to
handle the situations.

thanks
Vasu


--
srinu1264
------------------------------------------------------------------------
srinu1264's Profile:

http://www.excelforum.com/member.php...o&userid=34155
View this thread:

http://www.excelforum.com/showthread...hreadid=544626





  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default How can I catch a Paste action and default it to PasteSpecial-

Just some added info: Perhaps more is needed:

? application.CommandBars("Standard").Controls(12).C aption
&Paste
? application.CommandBars("Standard").Controls(12).I D
6002


set c = Application.CommandBars("Standard").FindControl(ID :=6002)
? c.Caption
&Paste

Search for 22 resulted in c being nothing.
--
Regards,
Tom Ogilvy



"Ardus Petus" wrote:

Here is one solution, catching all possibilities of Pasting.
To enable special pasting, run SetMyPaste
To reset to normal pasting, run: ResetMyPaste

HTH
--
AP

'------------------------
Option Explicit

Sub SetMyPaste()
SetAllPaste (True)
End Sub

Sub ResetMyPaste()
SetAllPaste (False)
End Sub

Private Sub SetAllPaste(bSet As Boolean)
Dim aCb As Variant
Dim iCb As Integer
aCb = Array("Standard", "Edit", "Cell")
For iCb = LBound(aCb) To UBound(aCb)
setPaste aCb(iCb), bSet
Next iCb
If bSet Then
Application.OnKey "^v", "MyPaste"
Else
Application.OnKey "^v"
End If
End Sub

Private Sub setPaste(sCb As Variant, bSet As Boolean)
Const iIdPaste = 22
Dim cbcControl As CommandBarControl
For Each cbcControl In CommandBars(sCb).Controls
With cbcControl
If .ID = iIdPaste Then
If bSet Then
.OnAction = "MyPaste"
Else
.Reset
End If
Exit For
End If
End With
Next cbcControl
End Sub

Private Sub MyPaste()
If Application.CutCopyMode Then
Selection.PasteSpecial Paste:=xlPasteValues
End If
End Sub
'-------------------------------

"srinu1264" a écrit
dans le message de news:
...

Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine to
handle the situations.

thanks
Vasu


--
srinu1264
------------------------------------------------------------------------
srinu1264's Profile:
http://www.excelforum.com/member.php...o&userid=34155
View this thread: http://www.excelforum.com/showthread...hreadid=544626




  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default How can I catch a Paste action and default it to PasteSpecial-

Search for 22 resulted in c being nothing.

I wonder if is XL version dependant, from the immediate window in my
XL2000 -

?Application.CommandBars.FindControl(ID:=22).Capti on
&Paste

Regards,
Peter T

"Tom Ogilvy" wrote in message
...
Just some added info: Perhaps more is needed:

? application.CommandBars("Standard").Controls(12).C aption
&Paste
? application.CommandBars("Standard").Controls(12).I D
6002


set c = Application.CommandBars("Standard").FindControl(ID :=6002)
? c.Caption
&Paste

Search for 22 resulted in c being nothing.
--
Regards,
Tom Ogilvy



"Ardus Petus" wrote:

Here is one solution, catching all possibilities of Pasting.
To enable special pasting, run SetMyPaste
To reset to normal pasting, run: ResetMyPaste

HTH
--
AP

'------------------------
Option Explicit

Sub SetMyPaste()
SetAllPaste (True)
End Sub

Sub ResetMyPaste()
SetAllPaste (False)
End Sub

Private Sub SetAllPaste(bSet As Boolean)
Dim aCb As Variant
Dim iCb As Integer
aCb = Array("Standard", "Edit", "Cell")
For iCb = LBound(aCb) To UBound(aCb)
setPaste aCb(iCb), bSet
Next iCb
If bSet Then
Application.OnKey "^v", "MyPaste"
Else
Application.OnKey "^v"
End If
End Sub

Private Sub setPaste(sCb As Variant, bSet As Boolean)
Const iIdPaste = 22
Dim cbcControl As CommandBarControl
For Each cbcControl In CommandBars(sCb).Controls
With cbcControl
If .ID = iIdPaste Then
If bSet Then
.OnAction = "MyPaste"
Else
.Reset
End If
Exit For
End If
End With
Next cbcControl
End Sub

Private Sub MyPaste()
If Application.CutCopyMode Then
Selection.PasteSpecial Paste:=xlPasteValues
End If
End Sub
'-------------------------------

"srinu1264" a

écrit
dans le message de news:
...

Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine

to
handle the situations.

thanks
Vasu


--
srinu1264


------------------------------------------------------------------------
srinu1264's Profile:
http://www.excelforum.com/member.php...o&userid=34155
View this thread:

http://www.excelforum.com/showthread...hreadid=544626






  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,953
Default How can I catch a Paste action and default it to PasteSpecial-

Yes it is. I am using xl2003 right now

But ID's have changed in the past as well. This particular button has
enhanced functionality - so it isn't just an ID change, but it did replace
the ID 22 button.

--
Regards,
Tom Ogilvy


"Peter T" wrote:

Search for 22 resulted in c being nothing.


I wonder if is XL version dependant, from the immediate window in my
XL2000 -

?Application.CommandBars.FindControl(ID:=22).Capti on
&Paste

Regards,
Peter T

"Tom Ogilvy" wrote in message
...
Just some added info: Perhaps more is needed:

? application.CommandBars("Standard").Controls(12).C aption
&Paste
? application.CommandBars("Standard").Controls(12).I D
6002


set c = Application.CommandBars("Standard").FindControl(ID :=6002)
? c.Caption
&Paste

Search for 22 resulted in c being nothing.
--
Regards,
Tom Ogilvy



"Ardus Petus" wrote:

Here is one solution, catching all possibilities of Pasting.
To enable special pasting, run SetMyPaste
To reset to normal pasting, run: ResetMyPaste

HTH
--
AP

'------------------------
Option Explicit

Sub SetMyPaste()
SetAllPaste (True)
End Sub

Sub ResetMyPaste()
SetAllPaste (False)
End Sub

Private Sub SetAllPaste(bSet As Boolean)
Dim aCb As Variant
Dim iCb As Integer
aCb = Array("Standard", "Edit", "Cell")
For iCb = LBound(aCb) To UBound(aCb)
setPaste aCb(iCb), bSet
Next iCb
If bSet Then
Application.OnKey "^v", "MyPaste"
Else
Application.OnKey "^v"
End If
End Sub

Private Sub setPaste(sCb As Variant, bSet As Boolean)
Const iIdPaste = 22
Dim cbcControl As CommandBarControl
For Each cbcControl In CommandBars(sCb).Controls
With cbcControl
If .ID = iIdPaste Then
If bSet Then
.OnAction = "MyPaste"
Else
.Reset
End If
Exit For
End If
End With
Next cbcControl
End Sub

Private Sub MyPaste()
If Application.CutCopyMode Then
Selection.PasteSpecial Paste:=xlPasteValues
End If
End Sub
'-------------------------------

"srinu1264" a

écrit
dans le message de news:
...

Hi ,

How can I catch a Paste action behaviour(Paste menu click and ^v) and
default it to PasteSpecial-Values.

I should be able to catch these events and call my custom subroutine

to
handle the situations.

thanks
Vasu


--
srinu1264

------------------------------------------------------------------------
srinu1264's Profile:
http://www.excelforum.com/member.php...o&userid=34155
View this thread:

http://www.excelforum.com/showthread...hreadid=544626







Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Make Paste values default... DanF Excel Discussion (Misc queries) 0 July 4th 08 07:21 AM
can you change the default paste method? (paste values) David A Brown Excel Discussion (Misc queries) 3 December 18th 07 09:59 AM
How do I capture user paste action and convert to Paste Special DonC Excel Programming 0 November 19th 04 01:43 PM
How to catch copy/paste & cut/paste ? Arifi Koseoglu Excel Programming 4 February 26th 04 12:42 PM


All times are GMT +1. The time now is 11:59 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"