質問掲示板
岡三RSS
集いの広場

アップロードされたファイルおよび投稿内容についての注意事項 別窓

複数の単語で検索する方法 別窓

【RSS 365FX、RSS 365CFD】質問箱

かぶのすけ

VBS経由でマクロ実行時のデータ取得ができない件

いつも困ったらこちらを拝見して勉強させていただいています。今回初めて質問させていただきます。
エクセル2016.windows11にて岡三RSSCFDを利用して、240分足の始値、高値、安値、終値、取引数量、建玉数量を取得、別シートへ転記するマクロを書きました。
既存の足データを一度全てClear contensし、
その後DoEventsとDo loopにてRSS側から再度データを取得させる仕組みにしました。

A
全て手動で
1.ネットトレーダー株365を起動→2.エクセルを起動+同マクロを含むファイルを開く→3.マクロ実行
とすると問題なく転記することができました。
こちらを自動化するためにVBSを書いて
B.
1,手動でネットトレーダー株365を起動→
2.VBSにてエクセルを起動+同マクロを含むファイルを開く3.同VBSにてマクロ実行
とするとうまく転記できません。
動きを見てると既存のデータを消した後に再度データが埋まらずにそのままマクロが走ってしまい、最新データを取得できない様です。

AとBの違いはVBSで実行するかしないかだけなのに、なぜこの様になるのか分からず1ヶ月近く試行錯誤していましたが、自力ではお手上げです。具体的にはVBA上で、wait.sleep.CalculateなどとDoEventsの組み合わせを追記してみたり、
VBS上でSleep 3000を散りばめたりしてみましたが、なんとも解決しません。

どうしたらVBSからでもうまくデータを取得させられるのでしょうか?

2024年03月02日

かぶのすけ

excel_macro_exec.xlsx (486B)

と思いましたが、vbsファイルをxlsxファイルにエクスプローラー上で変えたらUPできましたので添付いたしました。
よろしくお願いいたします。

2024年03月20日

ログインしてコメントを投稿する

大野 了

かぶのすけさん、こんばんは

ファイルありがとうございます
xlsm、vbs共に正常にダウンロードできました。

大変申し訳ございません。
本日、少し忙しいので、木曜日か金曜日に確認したいと思います!!

しばらくお待ちいただけますと幸いです!!

2024年03月20日

ログインしてコメントを投稿する

大野 了

かぶのすけさん、こんにちは!!

原因が分かりました。
というか、元々知っていたんですが、完全に忘れてしまっていました(ごめんなさい

かぶのすけさんが、VBSで使用されているCreateObjectは『COM形式』と言いまして、
この形式で起動したExcelでは"岡三365CFD"が正常に動作しません。

これを回避するためには、shellというものを使ってExcelを起動しないといけないのですが、
この形式で動かすと岡三CFDは正常に動作sるのですが、外部からマクロを実行することが非常に面倒です。
※現在VBSで、objExcel.Application.Run"時間記入" とされている部分です


これを回避するためには、WorkbookのOpenイベントでマクロが自動で実行されるようにするのが
一番手っ取り早いのですが、これだとVBSからではなく手で起動した際にもマクロが動いてしまいます。

このため、もしExcelを起動しっぱなしでよければ、onTimeをお勧めします!!
もし、何かしらのご都合でExcelの起動しっぱなし自体が厳しい場合は、また、ご連絡いただけますと幸いです。
なんか考えてみます!!


※一応、現状で動くソースコードを記載しておきます

VBS
==========================================
Option Explicit
Dim objShell

Set objShell = CreateObject("WScript.Shell")
objShell.Run "excel F:\SynologyDrive\myfile\個人\自動起動.xlsm"

set objShell = nothing
==========================================



Excel (ThisWookbook に追加してください)
==========================================
Private Sub Workbook_Open()
Call Run("時間記入")
End Sub
==========================================

2024年03月21日

ログインしてコメントを投稿する

大野 了

ご参考になれば幸いです!!

2024年03月21日

ログインしてコメントを投稿する

かぶのすけ

大野様
解決方法を示していただきありがとうございます!自分だけでは到底たどり着けない答えです。『COM形式』とShellといったものを初めて聞きました。Shellで起動して、マクロ自体はオープンイベントで実行させるのですね。承知いたしました!!

実は、エクセルの起動しっぱなしは、パソコンが100%自分の物ではなく家族と共有なので、(とはいっても90%以上は私が使っているのですが)家族が使うときにエクセルが開きっぱなしだと、少々不都合が生じます。
また、エクセル開きっぱなしを想定していなかったので、その後の自動売買計画(マクロのつくり)を練り直す必要があります。

ですので、ご教示いただいた「現状で動く方法」とは別に、「外部からマクロを実行すること」も検討したいのが本音です。
非常に面倒とのことでしたが、どれぐらい面倒なのかが身に染みてないのでこのようなことを申し上げてしまっているのですが、
方法があるのでしたら、ぜひともご検討、ご教示いただきたいです!!!
教えていただいているのに申し訳ありません。ご検討いただけますでしょうか?

2024年03月22日

ログインしてコメントを投稿する

大野 了

test.xlsx (1.2KB)

かぶのすけさん、こんにちは!!

なるほどー
共用のPCだと開きっぱなしは厳しいですねー

いろいろと考えてみたのですが、WSH(VBS)縛りだと制限が多く・・・
いろいろと面倒だったので、キー操作をエミュレーションするやり方でやってみましたー


添付しましたサンプルは『自動起動.xlsm』のマクロは使用せず、すべてVBSだけでやっていますので、
サンプルのVBSで良ければ『自動起動.xlsm』のマクロは削除してしまっても問題ありません。


もし
『できるだけマクロでやりたいぜ!!』
ということでしたら、
『チャートシート選択(27行目)』から 『RSS時系列データ取得待機(50行目)』のRSSのデータ取得の部分と
『保存と終了(70、71行目)』だけをVBSで行うと、RSSのデータ取得は動きますので、
後は、もともとかぶのすけさんが作られていた、
CreateObject(COM形式)でもう一度Excelを起動してRunでマクロを動かせば良いと思います!!


ご参考になれば幸いです!!

また、もしわかり辛い点がありましたら、再度ご連絡いただけますと幸いでーす!!

※自分も拡張子をxlsxに変えていますので、vbsに変更していただけますと幸いです!!

2024年03月23日

ログインしてコメントを投稿する

かぶのすけ

大野様
ご教示ありがとうございます。
先日はバタバタしてしまい、確認作業ができなかったのですが、確認出来次第結果をご報告させていただきます!よろしくお願いします!

2024年03月27日

ログインしてコメントを投稿する

かぶのすけ

大野様
1OnTime
2VBS(Shell)×AUTOOPEN、
3VBS(Shell)×エミュレート(+マクロ)
確認検証させていただきました。
3は複数銘柄にわたってループ処理をしていくときにコードを冗長にするか、マクロとVBSの切り替えを頻繁にすることになり、私には管理が難しそうでしたので、
2で考えていきたいと思います。AUTOOPENを発動させずに開く方法を見つけましたので、それも使いながら、自分のシステムをまた作っていきたいと思います。
1もすごく良かったので、最終手段はそれにしようかと笑
教えていただいて本当にありがとうございました!!

2024年04月05日

ログインしてコメントを投稿する

大野 了

かぶのすけさん、こんにちは!!

1のonTimeが一番安定はするのですが
やっぱりExcelをあげっぱなしにしないといけないので、
何か別の方法で解決できるのであれば、それもよさそうですねー

なにはともあれ、少しでもお役に立てたようでよかったです。
また、何かありましたらご質問いただけますと幸いです!!

2024年04月05日

ログインしてコメントを投稿する
12

すべての投稿を表示する

to_top
to_top

アップロードされたファイルにはウイルスチェックを行っておりますが、未知のウイルス等に感染されている場合がありますので、アップロードされたファイルのご利用はご注意ください。
また、取引パスワード等の重要な情報を投稿内容に含めないようご注意ください。
なお、アップロードされたファイルの利用や投稿内容によって、投稿者自身や他の利用者が被った損害に対して当社は一切責任を負いません。

また、セキュリティの関係上、一部コマンド等を含む内容を送信するとエラー画面が表示され、投稿ができない場合がございます。何卒ご了承ください。

岡三RSS集いの広場では、複数の単語による検索が可能です。

例)関数 and サンプル
→AND検索となり、「関数」および「サンプル」を含む検索結果が表示されます。

例)関数 or サンプル
→OR検索となり、「関数」または「サンプル」を含む検索結果が表示されます。

例)関数 not サンプル
→NOT検索となり、「関数」を含むが「サンプル」は含まない検索結果が表示されます。

※and、or、notの前後は半角スペースで区切ってください。
※単語の間を半角スペースで区切るだけだと、OR検索となります。