今まで(Windows2000+Office2000)の環境と時は、
EXCELと楽天MarcketSpeedの連携に
マーケットスピードライブラリを使用していたのですが、
Vistaに変更したことにより、使えなくなりました。
使っていた機能としては↓ですが、
rmsc.Market関数:銘柄コードを指定すると市況情報を表示する関数
rmsc.Market関数:銘柄コードを指定すると個別チャートを表示する関数
単純に言うと、MSの見たいページに株式コードを自動で入力する関数。
代わりにVBAのsendkey関数を使用したところ、Office2000/2003のバグ(?)で
実行時エラー(70)が出るようです。
※詳しくは
ココ
色々調べましたが、Office2000での回避策は無いようです。
何とか別の機能で実現できないかを調べた結果、
VBAからWin32API(USER32.DLL)のkeybd_eventメソッドを使用することで
sendkeyの代用が出来そうだとわかりました。
こんな時間なので、枝葉の機能実装は後回しにするとして、
骨組み処理を作成してみました。
---
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_EXTENDEDKEY As Long = &H1
Private Const KEYEVENTF_KEYUP As Long = &H2
Private Const fKEYDOWN = KEYEVENTF_EXTENDEDKEY
Private Const fKEYUP = KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP
Sub Sample()
AppActivate "Market Speed Ver6.2"
Call keybd_event(49, 0, 0, 0) --数字の1を押す
Call keybd_event(50, 0, 0, 0) --数字の2を押す
Call keybd_event(51, 0, 0, 0) --数字の3を押す
Call keybd_event(52, 0, 0, 0) --数字の4を押す
Call keybd_event(vbKeyReturn, 0, 0, 0) --RETURNを押す
End Sub
---
株式コードを入力する部分は、本実装ではもう少しスマートに書くとして、
とりあえず機能的には、これでOKです。