Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi all,
I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
If the problem is intermittent, it may be a timing issue. Try putting a
DoEvents between your statements -- Gary''s Student - gsnu201002 "Basta1980" wrote: Hi all, I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Gary,
Thank you for your help but it doesn't solve my problem. What happens is when I run the procedure; 1. It jumps to the other application (this works) 2. Select an inputbox with shortcode ALT+S (this does not work) 3. Paste data with shortcode CTRL+V (this works) The code I use for the ALT+S is; SendKeys "%S", True The code I use for the CTRL+V is; SendKeys "^V", True In essence both lines are the same, though I tried putting one of them in brackets which didn't solve my problem. This probably expalins my situation a bit better. Maybe you, or someone else, can make something out if it 'cause I'm lost here Greetz Basta "Gary''s Student" wrote: If the problem is intermittent, it may be a timing issue. Try putting a DoEvents between your statements -- Gary''s Student - gsnu201002 "Basta1980" wrote: Hi all, I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
A DoEvents might not be enough.
I would use a call to SLEEP API function within a loop to avoid freezing Excel. Declare Sub Sleep lib "kernel32" (ByVal dwMillisecs as Long) Sub Doze(Millisecs as long) Dim i as Long for i = 1 to Millisecs/10 Sleep(10) 'freeze your code for 10 milliseconds next i End Sub Depending on the sluggishness of your system, you may need to call Doze with a value of up to 2000 (= 2 second) to allow the app getting activated and able to receive the SendKeys. Usually 200 to 300 should be sufficient. HTH. Helmut. "Gary''s Student" schrieb im Newsbeitrag ... If the problem is intermittent, it may be a timing issue. Try putting a DoEvents between your statements -- Gary''s Student - gsnu201002 "Basta1980" wrote: Hi all, I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Basta,
As noted by others on the thread, and from your observations, SendKeys is quite temperamental. Initially, when I used to use SendKeys I discovered issues with wait times and code debugging. For example, the "wait" argument of SendKeys never seemed to work, DoEvents sometimes did the trick, and Application.Wait or Sleep was almost always needed. Despite using these tricks to get SendKeys to work properly, I found it to be unreliable. (As a side note, I discovered that if I ran a procedure without any breakpoints, I could better test SendKeys; however, if I stopped or interrupted the code prior to a procedure completing its execution, then SendKeys never worked properly). Anyhow, I finally got so frustrated with SendKeys that I moved over to a number of API calls that work by grabbing handles to specific windows (i.e. windows, combo boxes, text boxes, etc.) and then sending messages to those handles. Though this was a significant investment in time and resources, I've never run into any SendKeys issues (including reliability). Best, Matthew Herbert "Helmut Meukel" wrote: A DoEvents might not be enough. I would use a call to SLEEP API function within a loop to avoid freezing Excel. Declare Sub Sleep lib "kernel32" (ByVal dwMillisecs as Long) Sub Doze(Millisecs as long) Dim i as Long for i = 1 to Millisecs/10 Sleep(10) 'freeze your code for 10 milliseconds next i End Sub Depending on the sluggishness of your system, you may need to call Doze with a value of up to 2000 (= 2 second) to allow the app getting activated and able to receive the SendKeys. Usually 200 to 300 should be sufficient. HTH. Helmut. "Gary''s Student" schrieb im Newsbeitrag ... If the problem is intermittent, it may be a timing issue. Try putting a DoEvents between your statements -- Gary''s Student - gsnu201002 "Basta1980" wrote: Hi all, I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta . |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Matthew,
Thanks for your comment on this. API and the corresponding coding something which I'm not familiar with. Maybe, soom time soon, I will spend some time on this. Thnx Basta "Matthew Herbert" wrote: Basta, As noted by others on the thread, and from your observations, SendKeys is quite temperamental. Initially, when I used to use SendKeys I discovered issues with wait times and code debugging. For example, the "wait" argument of SendKeys never seemed to work, DoEvents sometimes did the trick, and Application.Wait or Sleep was almost always needed. Despite using these tricks to get SendKeys to work properly, I found it to be unreliable. (As a side note, I discovered that if I ran a procedure without any breakpoints, I could better test SendKeys; however, if I stopped or interrupted the code prior to a procedure completing its execution, then SendKeys never worked properly). Anyhow, I finally got so frustrated with SendKeys that I moved over to a number of API calls that work by grabbing handles to specific windows (i.e. windows, combo boxes, text boxes, etc.) and then sending messages to those handles. Though this was a significant investment in time and resources, I've never run into any SendKeys issues (including reliability). Best, Matthew Herbert "Helmut Meukel" wrote: A DoEvents might not be enough. I would use a call to SLEEP API function within a loop to avoid freezing Excel. Declare Sub Sleep lib "kernel32" (ByVal dwMillisecs as Long) Sub Doze(Millisecs as long) Dim i as Long for i = 1 to Millisecs/10 Sleep(10) 'freeze your code for 10 milliseconds next i End Sub Depending on the sluggishness of your system, you may need to call Doze with a value of up to 2000 (= 2 second) to allow the app getting activated and able to receive the SendKeys. Usually 200 to 300 should be sufficient. HTH. Helmut. "Gary''s Student" schrieb im Newsbeitrag ... If the problem is intermittent, it may be a timing issue. Try putting a DoEvents between your statements -- Gary''s Student - gsnu201002 "Basta1980" wrote: Hi all, I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta . |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Gary,
Found the issue s instead of S :-S "Gary''s Student" wrote: If the problem is intermittent, it may be a timing issue. Try putting a DoEvents between your statements -- Gary''s Student - gsnu201002 "Basta1980" wrote: Hi all, I'm using a simple sendkey statement to paste (ctrl v) cell content to another application. However when running the code it sometimes works (I can see the cell content copied and pasted to the application) but most of the times it just jumps from Excel to the other application and stops (so nothing is pasted). Anybody got a clue what might be going on here? Code = Gemini: AppActivate ("CSM - Citrix Presentation Server Client") SendKeys ("{^V}"), True Kind regards, Basta |