• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAを同時実行)

VBAを同時実行する方法とは?

このQ&Aのポイント
  • VBAを同時実行するための2つの方法とその仕組みについて詳しく調べました。
  • 方法1ではエクセルを分けて新規エクセルを起動し、監視ファイルと発注ファイルを読み込みます。
  • 方法2ではエクセルの中で両方のファイルを別々に立ち上げ、VBAが共用されますが同時に動作するかについても検証しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 私が、ここの掲示板を書いてから約1年、私の知っている範疇では、その件は根本的な解決ついていないです。 理由はふたつ。 ・今回のように最初に、質問者が、それを言ってくださらなかったので、回答者が、あれこれやっている間に、時間が掛かりすぎ、質問者も良く分からないので放り出したままになっている。 ・少なくとも私は、RSS の仕組みが良く分かっていないし、そのために手に入れることが出来ないので、想像の範囲でしかない、ということ。アドイン・スタイルであるので、いずれにしても、VBAが、それとバッティングする可能性がある、ということだけしか分からない。 ということです。 たぶん、これに詳しい人は、どこか別にいるのではないか、と思います。かなりの達人で、古くからVBAで開発していた人がVBA専用掲示板にいたような気がします。 >発注VBA実行中にも監視VBAのcaluculateの更新は必須ですよね。 >しかし,これって同時に走るのでしょうか? 「caluculateの更新は必須ですよね。」-いいえ、それは違います。 通常、以下の三つが、VBAマクロでは、オフになりますが、内部的には計算はされても、表示は出ないようにする、別の働きはさせない、介入はさせない、というのが基本スタイルです。 Application.ScreenUpdating Application.EnableEvents Application.Interactive 'まれに マルチタスクは関係なく、Excelの場合は、擬似的に起こるだけです。両方を立てようとすると、両方が犠牲になってしまいます。他のものが加わると、性能的に割り引いて動かそうとします。ただ、VBAは、基本的には、10m ~100ms の世界ですから、VBA自体をインターバルに用いることによって解決させる、というのがテクニックです。 >エクセルの中で,両方のファイルを別々に立ち上げる。この場合はVBAが共用されますが,VBAは同時に動くのでしょうか? たぶん、VBAでなくても、本来、不可能だと思います。擬似的に、そう見えるだけだと思います。(前回の同様のご質問者は、そうは見えない、とおっしゃっていましたが)VBAは、ひじょうに遅いのですが、仮に、他の言語でも、原理的には変わらないと思っています。 それと、別件ですが、今の状況だとしますと、時刻あわせの件は、VBA側からはやめたほうがよいです。そのプロセス上のロスが大きいように思います。直接、ソフトウェア・ツールと電波時計とのチェックのほうがよいと思います。

gyogyo
質問者

お礼

回答ありがとうございます。 >>私が、ここの掲示板を書いてから約1年、私の知っている範疇では、その件は根本的な解決ついていないです。 なるほどなるほど。 >>「caluculateの更新は必須ですよね。」-いいえ、それは違います。 これの意味は,自分にとってプッシュの株価データの取得が必須という意味です。 混乱を招きましてすいません。 >>通常、以下の三つが、VBAマクロでは、オフになりますが、内部的には計算はされても、表示は出ないようにする、別の働きはさせない、介入はさせない、というのが基本スタイルです。 >>Application.ScreenUpdating >>Application.EnableEvents >>Application.Interactive 'まれに なるほど,勉強になります。私が知りたかったのは,1つのエクセルの中に2つのファイルが同居すると優先される実行コードはどちらか一方に2者択一になるのではないかと思ったからです。 だったら,2つのエクセルを立ち上げた方がCPUやWINが限られた時間の中でバランスよく処理を割り振ってくれるのではないかと考えたからです。 >>マルチタスクは関係なく、Excelの場合は、擬似的に起こるだけです。両方を立てようとすると、両方が犠牲になってしまいます。他のものが加わると、性能的に割り引いて動かそうとします。ただ、VBAは、基本的には、10m ~100ms の世界ですから、VBA自体をインターバルに用いることによって解決させる、というのがテクニックです。 何はともあれ,やってみました(すいません,最初からやれって怒らないで)。 エクセルが1つでファイル2個同居とエクセル自体を2個立ち上げた場合と。 結果は,変わりありませんでした。見てる感じでは違いはありませんでした。 一応マルチタスク(当然擬似ですが,この場合でいう擬似はCPUまたはパソコンが2台ないかぎり完全なマルチはありえないという意味です) で動きます。低負荷の場合は問題ありませんが,高付加がかかると。取得データが飛び飛びになります。 おっしゃる通りです。 やはり,これもおっしゃる通り,自分でタイミングやらなにやらに相当知恵を絞る必要がありそうです。 本当にありがとうございました。 ちなみに時計の合わせの件は朝の一回だけの予定ですので,高負荷下ではありません。 一度試させていただきます。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 再実行

    エクセルVBAでループによる以下のような定期実行を行っています。 >1時間に一度株価のデータを取りに行きます。 >データ取得後、他のPCに(VBAでソフトを起動させて)アップロードします。 *このアップロードの時に、ソフトが別の処理をしていると起動しません。 VBAで起動はさせるものの、ソフトが実行しないという状態になります。 そこで、一度行った処理を時間をおいて再度実行させたいのです。 できれば、30秒後と1分後に2回再実行するというようにしたいと思っています。 どなたか、お力添え頂けませんか

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • 楽天RSSからエクセルVBAを使用し確実にデータ受信する方法に関して質問です。

    楽天のRSSとGMO証券のAPIを使用し、エクセルVBAにて自動売買をしているのですが、RSSのデータを受信出来ていない事が多々あり非常に困っております。 どういう事かと申しますと、3台のPCで自動売買エクセルを起動し1秒ごとに銘柄情報を監視し、条件を満たした銘柄を売買すると言うものなのですが、肝心のデータがRSSから受信出来ませんと、売買条件を満たせ無い為、売買出来ないと言う状況です。 3台起動していても、平均すると1.2台程度の稼動率かと思います。 そこで、エクセルVBAを使用し、RSSから確実にデータ受信する方法をご存知の方がいらっしゃいましたらアドバイス頂ければと思います。 個人的には、データ受信要求を投げてから、ある一定時間以上応答が無い場合、再度RSSからデータ受信要求を投げる。 もしくは、RSS.exeを再起動すると言う方法になるかと思います。 エクセルVBAにて現状の改善方法をご存知の方、宜しくお願いいたします。

  • VBAを実行しないと開けないエクセルファイル

    タイトルのようなエクセルファイルを作りたいです。 閲覧者がVBAの実行を認めない限り、閲覧不可にしたいのです。もし認めない場合はメッセージボックス等で「開くことができません」と表示され、エクセルが閉じるようにしたいです。 どのようなVBAのプログラムを組めば実行できますか?

  • VBA_マクロ内でマクロ実行

    独学でVBAをやってる初心者です。 よろしくお願いします。 EXCEL2003を使ってます。 例) <A.xlsファイル> Sub File_A () Workbooks.Open Filename:="B" Call File_B Range("A1").Select Selection.Paste End Sub <B.xlsファイル> Sub File_B () Range("A2:T5").Select Selection.Copy End Sub A.xlsファイルを開きマクロFile_Aを実行させると B.xlsファイルのマクロFile_Bを実行することができません。 どうしたらうまく実行できますか? 教えてください。

  • XCELのVBAマクロで次のことが実行できますか。

    XCELのVBAマクロで次のことが実行できますか。 (前提)WINDOWSで (1)MYDOCのフォルダAにExcelファイルA1.xlsからA9.xlsまで9個のファイルと、もう一つマクロBBの入ったExcelファイルB.xlsがあります。 (2)各Ai.xlsには、Aisheet(i=1カラ9)と名前のsheetが1つのみあります。 (処理したいこと) A1.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 続いて同様にA2.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 以下A9まで実行したい。 (質問)Bのマクロに新たにCCというマクロを作り、CCを実行することで、自動的に(処理したいこと)を実行してしまうようなものを作れますか。 また作るとしたらおおよそどんな風に作ればいいでしょうか。 ご回答よろしくお願いします。

  • teratermマクロをVBAで実行

    teratermマクロについてご教示願います。 teratermマクロを組んで、Linuxサーバにログインして処理をする.ttlファイルを作成しようと思っています。 その.ttlファイルを、VBAのプログラムから実行することは可能でしょうか? やりたいことは、EXCELのシート上にある「実行」ボタンを押下すると、VBAからteratermマクロが実行される、という処理です。 可能かどうか教えてください。また、もしご存じであればその際の VBAの組み方も同時にご教示いただければと思います。 よろしくお願いいたします。

  • 新規作成したExcelにVBAを登録したい

    お世話になります。 下記の手順で、新規のExcelにVBAを登録し、 実行したいと思っております。 (1)「元ファイル.xls」から、VBAで新規Excelbookを作成 (2)名前を「テスト.xls」にする (3)「テスト.xls」にVBAコードを登録する (4)(3)で登録したVBAを実行する そこで、(3)のVBAコードを登録する方法がわかりません。 お手数ですがご存じの方教えて頂けないでしょうか? 何卒宜しくお願い致します。

  • VBA-MyExcelファイルをコピー

    目的は今開いているExcelファイルを適宜バックアップする。 方法として自身Excelに下記VBA「FileCopy」文を記述して実行⇒実行エラーにて失敗。 対処方法又は妙案をご教授ください。 Option Explicit Private Const MyFile = "C:\Tmp\Sample.xls" '自身ファイル Private Const DsFile = "C:\Tmp\Sample_01.xls" '複製ファイル Sub SAMPLE() ThisWorkbook.Save FileCopy MyFile, DsFile End Sub

  • 同時に3つのエクセルを開きたいです。今現在 VBAで以下のようになって

    同時に3つのエクセルを開きたいです。今現在 VBAで以下のようになっています。 Sub Auto_Open() Workbooks.Open "U:\勤務\体制\出勤表.xls" End Sub これをにもう一つエクセルのシートを追加して開きたいです 追加する方法を教えてください!! 追加したいエクセルは「U:\入力\sTAFF\人時\予定.xls」です。

専門家に質問してみよう