アプリ版:「スタンプのみでお礼する」機能のリリースについて

楽天証券のツール Market Speed(MS)をVBAを使って、shellにて起動させることは出来ました。
加えて以下のことをしたいのですが可能でしょうか。

1、起動したMSでログインする。
2、すでにMSが起動しているときは、何もしない。(起動しているかをチェックし回避)
3、色々調べるとshellは古いので、winAPIが良いとの記述が多いのですが、上記のことをwinAPIで記述するにはどうしたらよいか。

以上の3点ですが、ご教授いただけないでしょうか。
実コードでなくても、参考意見や考え方だけでも結構ですので、色々な方の教えをいただけたら幸いです。
よろしくお願い致します。
なお、shellによる起動は以下のとおりです。(一部を抜粋)

Sub kidou()

Dim strPass As String
Dim strMsg As String
Dim varRetval As Variant

strPass = "C:\Program Files\MarketSpeed\MarketSpeed\MarketSpeed.exe"
strMsg = "MSを開きますか。"

If vbYes = MsgBox(strMsg, vbYesNo) Then
varRetval = Shell(strPass, vbNormalFocus)
End If

Exit Sub

End Sub

A 回答 (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

 
    • good
    • 0
この回答へのお礼

早速ありがとうございます。

shellが古いとは、そういうことだったんですね。
参考になりました。

それに、起動しているときは回避、していないときは起動とういう望んでいたことが出来ました。ありがとうございました。

あと一点、起動したプログラム(MS)のログインさえ出来れば・・・
キーボードマクロやショートカット付与のアプリなどと組み合わせれば出来るのかもしれないようですが、出来ればVBAだけで制御できればと考えております。

重ね重ね感謝いたします。ありがとうございました。

お礼日時:2006/12/08 07:11

こんにちは。

Wendy02です。

>起動したプログラム(MS)のログインさえ出来れば

おっしゃっている意味は、自動ログインで、無人で動かすことだと思います。もしかしたら、すべての自動化させる専用のツールが、Vector から出ているかもしれません。

Market Speed からでは、VBAでコントロールするのは、私には無理ですね。私は、VBAでIEをコントロールすることはしますが、Market Speed は、独自のフレームになっている関係で、一般的なコマンドではアクセスできないはずです。Market Speed 自体を解析しなくてはなりません。出来る人もいるようですが、私は、それはしません。

ただ、以下は一種のキーロガー(コマンド記録)でもあり、プログラムですが、

UWSC 自動化ソフト なら、可能かもしれません。
http://www.h7.dion.ne.jp/~umiumi/
    • good
    • 0
この回答へのお礼

再度、ご回答いただき本当にありがとうございます。

自動ログインする本来の目的は、パソコンに不慣れな父にスクリーニングのマクロを渡したい為に、MSが起動していようがいまいが関係なく、スクリーニングのマクロを実行すると最初にMSの起動を確認し、それからRSSにてデータを取得して、スクリーニングするといった形にしたかったのです。

しかし、丁寧にご説明していただいたおかげで、私のような素人には到底、難しいということがわかりましたので、今回は諦め、その労力をVBAの勉強に費やすことにしました。

この度は、ありがとうございました。

お礼日時:2006/12/08 13:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!