- ベストアンサー
Market SpeedをVBAで制御する方法
- 楽天証券のツール Market Speed(MS)をVBAを使用して制御する方法について説明します。
- 起動したMarket Speedでログインする方法や既に起動しているかをチェックし回避する方法についても触れます。
- shellではなくwinAPIを使用して上記のことを実現する方法についても考えてみましょう。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >3、色々調べるとshellは古いので、winAPIが良いとの記述が多いのですが、上記のことをwinAPIで記述するにはどうしたらよいか。 うーん、Shell関数は、VBA のコマンドの一つであって、それ自体が新しい古いとは言えません。Shellプログラム(つまりBatchプログラム)なら古いです。また、Win32API は、.Net Framework が対応してしまうので、いずれは使わなくなるような気がします。 以下は、上手く行くかどうかは分かりません。Class の名前があっているのか分からないからです。 'Option Explicit Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Sub TestPrc() Dim rtn As Long Dim strClassName As String Dim varRetval As Long Dim Id As Long Dim mCommand As String Dim strMsg As String mCommand = "C:\Program Files\MarketSpeed\MarketSpeed\MarketSpeed.exe" strMsg = "MSを開きますか?" strClassName = "MDIFrame" 'クラス rtn = FindWindow(strClassName, vbNullString) If rtn <> 0& Then MsgBox "既に起動しております。", vbInformation Exit Sub Else If vbYes = MsgBox(strMsg, vbYesNo) Then varRetval = Shell(mCommand, vbNormalFocus) End If End If End Sub
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 >起動したプログラム(MS)のログインさえ出来れば おっしゃっている意味は、自動ログインで、無人で動かすことだと思います。もしかしたら、すべての自動化させる専用のツールが、Vector から出ているかもしれません。 Market Speed からでは、VBAでコントロールするのは、私には無理ですね。私は、VBAでIEをコントロールすることはしますが、Market Speed は、独自のフレームになっている関係で、一般的なコマンドではアクセスできないはずです。Market Speed 自体を解析しなくてはなりません。出来る人もいるようですが、私は、それはしません。 ただ、以下は一種のキーロガー(コマンド記録)でもあり、プログラムですが、 UWSC 自動化ソフト なら、可能かもしれません。 http://www.h7.dion.ne.jp/~umiumi/
お礼
再度、ご回答いただき本当にありがとうございます。 自動ログインする本来の目的は、パソコンに不慣れな父にスクリーニングのマクロを渡したい為に、MSが起動していようがいまいが関係なく、スクリーニングのマクロを実行すると最初にMSの起動を確認し、それからRSSにてデータを取得して、スクリーニングするといった形にしたかったのです。 しかし、丁寧にご説明していただいたおかげで、私のような素人には到底、難しいということがわかりましたので、今回は諦め、その労力をVBAの勉強に費やすことにしました。 この度は、ありがとうございました。
お礼
早速ありがとうございます。 shellが古いとは、そういうことだったんですね。 参考になりました。 それに、起動しているときは回避、していないときは起動とういう望んでいたことが出来ました。ありがとうございました。 あと一点、起動したプログラム(MS)のログインさえ出来れば・・・ キーボードマクロやショートカット付与のアプリなどと組み合わせれば出来るのかもしれないようですが、出来ればVBAだけで制御できればと考えております。 重ね重ね感謝いたします。ありがとうございました。