• 締切済み

すでに開いているブックのマクロを起動させるvbsを教えてください

お願いします。 00時から23時54分まで 常時開いていて、温度の数値をロギングしているexcelブックがあります。 1分おきにロギングし、10分おきに表に記録し、グラフ化しています。 エクセルを開き、閉じてOSを再起動、またエクセルを開く、を365日繰り返すものです。 基本的に常時無人です。 印刷、保存など、計7個の作業を Application.OnTime にて Workbook Open時にタイマーとしてマクロをかけてたのですが、 実行の信頼度が高くない(実行しない日がある)ので、 タスクスケジューラにて行おうとしました。 マクロを実行させるvbs Option Explicit Dim objxlsm Set objxlsm=CreateObject("Excel.Application") objxlsm.Workbooks.Open ("ブックパス) objxlsm.Run "Module11.DB保存" objxlsm.DisplayAlerts=False objxlsm.quit Set objxlsm = Nothing 以上を行うと、 今開いているブックではなく、保存されたブックを別で開き、そこのマクロを処理してしまいます。 現在開いているブックに処理をかける場合はどうしたらよいのでしょうか? このブックはリアルタイム(表内に1分おきに数値を更新します)に動いている表グラフなので、 なんとか、開いている(表示している)ブックで外部からマクロを実行したいのですが。。 ご教授ください。 ちなみに、このブックは、タスクスケジューラでvbsにて開いています。(関係ありますか?) おねがいします。

みんなの回答

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に On Error Resume Next Set objExcel=GetObject(,"Excel.Application") '既に起動しているExcelへの参照 On Error Goto 0 If objExcel Is Nothing Then   MsgBox "Excelは起動していません"   Wscript.Quit End If objExcel.Run "Book1.xls!DB保存" Set objExcel = Nothing

chintarou
質問者

補足

こんにちは。 回答ありがとうございます。 早速やってみたところ、 マクロ~を実行できません。このブックでマクロが使用できないか、 または、すべてのマクロが無効になっている可能性があります。 コード 800A03EC となります。 もちろんこのブックでマクロは使用しています。 一分ごとにロギングしている箇所にマクロが入っているので、 一分ごとにマクロを実行しているのですが。。。 どこが悪いのでしょうか?

関連するQ&A

  • 夜間だとvbsからエクセルマクロが起動しない。

    夜間だとvbsからエクセルマクロが起動しない。 wiodowsのタスクスケジューラでbatを起動し、batからvbsを起動し、vbsからエクセルマクロを起動する夜間バッチを作ったのですが、エクセルマクロが起動するタイミングでvbsが処理終了?します。 タスクスケジューラから手動起動したり、昼間に時間を指定した場合は問題なく動くのですが、夜間(早朝5:30)だと動きません。 たまたまエクセルマクロが異様に時間がかかっている可能性も考えましたが、朝9時時点でタスクマネージャのプロセスにEXCEL.EXEはいませんでした。 夜間バッチで特に気をつけるべきことはあるでしょうか?

  • vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させた

    vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させたい。 こんにちは。 お世話になっております。 さて、最初はバッチでどうにかならないかと思っていましたが、下記vbsソースを見つけ、 早速チャレンジしたのですが、ファイルが開くところまではうまく行きますが、「マクロ Macro1がありません」というメッセージが出てしまい、マクロが実行されません。 手動でマクロを実行しようとするときに出てくるマクロ一覧には、PERSONAL.XLS:Macro1と、表示されております。 マクロの保存先をまちがえているのでしょうか? また、あるフォルダのcsvファイル全てに対して1つのvbsキックで処理が行なわれるようにするには、どの様にすればいいでしょうか? よろしくお願いします。 ----------------------------------------------------------------------- Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\Administrator\My Documents\001.xls" obj.Application.Run "Macro1"

  • タスクスケジューラに登録するとvbsからエクセルマ

    タスクスケジューラに登録するとvbsからエクセルマクロが起動しない。 wiodowsのタスクスケジューラでbatを起動し、batからvbsを起動し、vbsからエクセルマクロを起動するバッチを作ったのですが、エクセルマクロが起動しません。 batをダブルクリックした場合は問題なく動くのですが、タスクスケジューラから手動起動したり、時間を指定した場合は動きません。 このときタスクマネージャのプロセスにはwscript.exeはいましたがEXCEL.EXEはいませんでした。 タスクスケジューラで起動するときに特に気をつけることはあるでしょうか?

  • VBSでエクセルマクロの実行中

    VBSでエクセルを起動しマクロを実行ここまでは上手くいったのですが マクロはファイルを開いたエクセルにペーストするものですが ファイルを移すときにこのファイルで良いですかと聞いてきます いつもENTで実行しているのですが ENT key を押すか 開く(o)をクリックこれをVBSに組み入れたいのですが 出来るでしょうか?

  • バッチファイルファイル→VBS→エクセル マクロを有効にして起動

    Win/XP エクセル2002使用です。 VBSからエクセルのマクロを有効にして立ち上げたいのですが、 上手くいきません。 バッチファイル側  cd /D c:\  C:\***.vbs  exit /B VBS側 'エクセル起動  Set WshShell = CreateObject("WScript.Shell")  WshShell.CurrentDirectory = "C:\***"  WshShell.Run "C:\***\***.xls",3  WScript.Sleep(5000)  WshShell.SendKeys("E") '←マクロを有効にする  WScript.Sleep(5000)  WshShell.SendKeys("U") '←データソースへのリンクを更新 エクセル側(マクロ)  Sub Auto_open()   Application.OnTime TimeValue("13:00:00"), "Action"  End Sub  Sub Action()    ・・・(省略)・・・  End Sub ----------------------------- また、エクセルマクロは、VBSではなく手動で立ち上げますと、 問題なく時間になった時(13時)に作動します。 VBSのRunメソッドが、 エクセルマクロの Application.OnTime を待たずに走ってしまうことで、 エクセルマクロが無効になってしまっているのではないか? もしくは、データ更新のための sendkey("U")によって マクロが無効になってしまっているのはないか? と思っています。 恐れ入りますが、 よろしくアドバイスの程お願いします。

  • VBSからのエクセル起動について

    マクロを含んだBook(自作したもの)の起動時、起動直後の「セキュリティの警告画面」を、マクロセキュリティ中の状態で、表示させないで起動するためにVBSからの起動起動を考えています。いくつかウィンドウを開いた状態で、下記のコードにてBookを開くと、最前面に表示表示してくれません。対処方を教えてください。 Option Explicit Dim objExcelApp, strPath Const BookName = "Book1.xls" Set objExcelApp = CreateObject("Excel.Application") With WScript strPath = Replace(.ScriptFullName, .ScriptName, "") End With objExcelApp.Workbooks.Open strPath & BookName, False, False Set objExcelApp = Nothing *VBSはまだ勉強不足で、なんとなくこのコードの意味も解る程度です。VBAに関しては、一通り基本的なことはできます。よければ、このコードの詳しい意味も教えてください。また、他の対処法があれば教えてください。よろしくお願いします。

  • 個人用マクロブック

    エクセル2007を使用しています。 個人用マクロブックにマクロを保存すると、開いていないブックでも使用できると学びました。 ただマクロの保存先が BOOK1 開いている全てのブック 作業中のブック、の3つしかありません。 どうすれば個人用マクロブックを作ることが出来るのでしょうか?

  • ExcelVBA内のVBSで別ブックを開いたとき

    ブック1で、誰のPCからでもセキュリティの警告を出さないようにブック2を開くVBSを実行し、ブック1で使用した変数xの値をブック2に渡すということをやりたいのですが、上手くいきません...。 ブック2を開く所まではできたのですが、ブック2のセルに変数xの値を入れようとすると、エラー「インデックスが有効範囲にありません。」が発生し、そもそもブック2をアクティブにできません。 ファイル名・パス等は絶対に間違えていないと思います。 原因とどう修正すれば良いか、教えて頂けないでしょうか。 下記が簡略化したプログラムになります。 Book1のプログラム Sub Book1() Dim x As String x = "aaa" CreateObject ("Shell.Application") CreateObject("Shell.Application").ShellExecute "○○.vbs" Workbooks("Book2.xlsx").Sheets("Sheet1").Range("A1") = x End Sub ---------------------------------------------------------------------------------------------------------- VBSのプログラム Dim strExcFileName Dim objExcApp strExcFileName ="○○¥Book2.xlsx" Set objExcApp = WScript.CreateObject("Excel.Application") objExcApp.Visible = True Call objExcApp.Workbooks.Open(strExcFileName,,True) objExcApp.DisplayAlerts = False WScript.Quit 以上、宜しくお願い致します。

  • 画面から別ブック起動についてです。

     いつもお世話になっております。  VBAで作成した画面(エクセルシートに貼り付いています)で別ブックを開いてマクロ処理を実行させたいのですが、うまくいきません。 (状態)  ・画面から呼び出した別ブックは開きますが、マクロ処理が走ってくれません。  ・別ブックを直接開くとマクロ処理は走ってくれます。 (画面のソース) Dim objAppXL As Excel.Application Set objAppXL = CreateObject("Excel.Application") objAppXL.Caption = ToukeiDay objAppXL.Visible = True objAppXL.Workbooks.Open Filename:="別ブックパス"  というような状況です。よろしくお願いします。

  • エクセル タスクスケジューラでマクロ自動実行

    お世話になります。 win7/エクセル2010使用です。 エクセルのThisWorkbook_openでマクロを実行するファイルAを作っています。 ※Auto_Openは記述していません。 ファイルAをタスクスケジューラに設定いたしました。 問題なくマクロが自動実行されて、目的は果たしています。 ただ、不思議な点があります。 このファイルAをダブルクリックして開いても マクロは自動実行されていきます。 このファイルAをコピーして、ファイルBを作り それをダブルクリックで開くと、 ファイルBは、ブックが開いた後に、「セキュリティーの警告」がされて マクロの自動実行ができません。 通常は、「セキュリティーの警告」を出さないために Auto_Openなどでコードを記述すると思うのですが、 なぜ、Auto_Openを記述していないファイルAが自動実行されるのかがわかりません。 タスクスケジューラの設定に何か関係はあるのでしょうか? よろしくお願いします。

専門家に質問してみよう