

楽天証券のツール 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
No.1ベストアンサー
- 回答日時:
こんにちは。
>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
早速ありがとうございます。
shellが古いとは、そういうことだったんですね。
参考になりました。
それに、起動しているときは回避、していないときは起動とういう望んでいたことが出来ました。ありがとうございました。
あと一点、起動したプログラム(MS)のログインさえ出来れば・・・
キーボードマクロやショートカット付与のアプリなどと組み合わせれば出来るのかもしれないようですが、出来ればVBAだけで制御できればと考えております。
重ね重ね感謝いたします。ありがとうございました。
No.2
- 回答日時:
こんにちは。
Wendy02です。>起動したプログラム(MS)のログインさえ出来れば
おっしゃっている意味は、自動ログインで、無人で動かすことだと思います。もしかしたら、すべての自動化させる専用のツールが、Vector から出ているかもしれません。
Market Speed からでは、VBAでコントロールするのは、私には無理ですね。私は、VBAでIEをコントロールすることはしますが、Market Speed は、独自のフレームになっている関係で、一般的なコマンドではアクセスできないはずです。Market Speed 自体を解析しなくてはなりません。出来る人もいるようですが、私は、それはしません。
ただ、以下は一種のキーロガー(コマンド記録)でもあり、プログラムですが、
UWSC 自動化ソフト なら、可能かもしれません。
http://www.h7.dion.ne.jp/~umiumi/
再度、ご回答いただき本当にありがとうございます。
自動ログインする本来の目的は、パソコンに不慣れな父にスクリーニングのマクロを渡したい為に、MSが起動していようがいまいが関係なく、スクリーニングのマクロを実行すると最初にMSの起動を確認し、それからRSSにてデータを取得して、スクリーニングするといった形にしたかったのです。
しかし、丁寧にご説明していただいたおかげで、私のような素人には到底、難しいということがわかりましたので、今回は諦め、その労力をVBAの勉強に費やすことにしました。
この度は、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCについて
-
バッチファイル 特定ウインドウ...
-
Visual basic6.0からショートカ...
-
関連付けファイルの起動
-
VBで作成した実行形式の戻り値...
-
別プロジェクトを起動する
-
batファイルで立ち上げたaplを...
-
EXCELをバッチコマンドで...
-
バッチファイルからftpを実行時...
-
createprocessで起動させる別.e...
-
VB.NETでDOSコマンドの複数実行
-
64bitのwindowsサーバーで32bit...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
ページ間でデータを渡したい.
-
[teraterm] waitコマンドで停止...
-
VBscriptが起動しない?
-
一括でフォルダと同じ名前にフ...
-
ラッパーって何なんでしょう・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルで立ち上げたaplを...
-
VB.NETでDOSコマンドの複数実行
-
ExcelVBAにてアプリをタスクマ...
-
バッチファイル 特定ウインドウ...
-
EXCELをバッチコマンドで...
-
gccがコマンドプロンプト上で使...
-
バッチへ値を返す
-
c#でコマンドプロンプトを実行...
-
Shiftキーを押しながら起動
-
UWSCについて
-
複数の処理の終了を待ちたい
-
ASPからのEXEファイル起動
-
VBAからキャッシュを削除する方...
-
プログラムを実行すると、なぜ...
-
RUNASコマンドを使って、自動的...
-
バッチファイルからftpを実行時...
-
ショートカットの作成とコピー
-
ショートカットのリンク先が参...
-
コマンドプロンプト画面で動作...
-
VBSでコマンドプロンプトのカレ...
おすすめ情報