Multiple Sendkeys not working... need help to condense code

M

Mr. m0le

I'm using the sendkeys command to send different key strokes to an outside
program already running. Normally this isn't an issue except for this macro
i'm putting together i have 20+ sendkeys in a row just to get to where i need
the cursor. I looked in MS Help files and it said to just put a space
between the key and how many strokes but either vb gives me a code error or
it puts some combination of the word tab and the number used or "tabs" once
then the number.

here is an example of what I was trying to do;
main.screen.sendkeys ("<tab 20>") > this just puts the word and number into
the program instead of the actuall key stroke. I've tried all different
kinds of combinations to get it to work but without luck. Also, the sendkeys
command for it to work that i've seen so far is to have the key setup like so
("<KEY>").

Anyone have any ideas on how i can condense my many sendkeys commands?
 
G

Gary''s Student

Using SendKeys to send keystrokes to an app is like pitching in softball:

You need to allow the catcher time to catch the balls!

After each SendKeys statement, put a DoEvents.

This runs the app briefly (to process the keystroke)
 
P

Peter T

You may or may not need to include a DoEvents, as GS suggests, but not after
each tab unless a tab is supposed to trigger something else, which I doubt.
You might need the first character as an ESC. Try this to get a feel

Sub test()
Dim sKeys As String
sKeys = "a" & vbTab & "b" & vbTab & vbTab & vbTab & "c"
Application.SendKeys sKeys

' place the cursor just after the appostrophe below and press F5
'
End Sub

Regards,
Peter T
 
M

Mr. m0le

This will work if i edit what you put to make a variable with the different
key stroke combinations but still not quite what i was looking for. What i
really was try to see if it was possible was to just have one singe command
that used the key stroke a defined number of times.

ie. ("<Tab 20>") will enter the tab key for 20 strokes....

Either i'm missing something or the application I'm working with doesn't
allow for this type of command to run and i'm stuck with making variable sets.
 
M

Mr. m0le

I wasn't aware of this command as I'm new to coding but this doesn't make a
difference for this instance.
 
M

Mr. m0le

Yeah, it looks that way. I ended up creating several variables for the tab
amounts i needed.
 
P

Peter T

Dim sKeys As String
Dim n as long
n = 20
sKeys = "A" & String(n, vbTab) & "B"
application.sendkeys sKeys

Regards,
Peter T
 
M

Mr. m0le

this is a nice approach and a bit cleaner than the variables i ended up
creating but i think the program that my company uses for their mainframe
doesn't accept vbTab or something. This command does nothing with the
application.

thanks anyway, at least i have more ideas for future projects.
 

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