- 締切済み
異なるフォルダのファイルを順番に開く
office2016 今、異なる5つのフォルダでタスクスケジューラにてファイルを開いて実行しているのですが、たまにエラーで停止してしまいます。原因は、1つ目のファイルの処理が終了しないのに2つ目のファイルが起動されたことによるもの?と想定しています。タスクスケジューラの実行時間をずらしても解決はできそうなのですが、もっと確実な方法で対処したく。 5つのファイルは、それぞれ、ファイルが開かれたらoracleからマスターデータを取得して、ある処理実行したらサーブして終了、ファイルを閉じる という構成になっています。 5つのファイルは下記のマクロで構成しています。 Private Sub Workbook_Open() ’いろんな処理 ThisWorkbook.Close End Sub ファイル名が同じものがある関係で、 1つ目のファイルを開き、実行して閉じられたら 2つ目のファイルを開き、実行して閉じられたら 3つ目… という風に順番に実行する様な構成にしたく、とりあえず2つのファイルを順番に起動するマクロを検討しました。 file_open1が1つ目のファイルを開くマクロ file_open2が2つ目のファイルを開くマクロ なのですが、1つ目のファイルが開いて閉じるところまでは動作しますが、2つ目のファイルが開きません。 2つ目のファイルを開く条件、 OpenCheck = 0 And Workbooks("ファイルオープン.xlsm").Worksheets("sheet1").Range("A1") = 1 でA1セルには1が設定されていて、Debug.Print OpenCheckの結果も0になってます。なぜ2つ目のファイルが起動されないのかの原因と、もっとシンプルに起動可能な構成があれば教えていただきたく。 Sub file_open1() Path = "\\A" Workbooks.Open (Path & "\" & "a.xlsm") Workbooks("ファイルオープン.xlsm").Worksheets("sheet1").Range("A1") = 1 Dim wbName As String Dim OpenCheck As Boolean wbName = "a.xlsm" OpenCheck = call_BookOpenCheck(wbName) ' If OpenCheck = 0 And Workbooks("ファイルオープン.xlsm").Worksheets("sheet1").Range("A1") = 1 Then file_open2 Else End If Debug.Print OpenCheck End Sub Sub file_open2() Workbooks("ファイルオープン.xlsm").Worksheets("sheet1").Range("A2") = 1 ' Dim wbName As String Dim OpenCheck As Boolean wbName = "b.xlsm" OpenCheck = call_BookOpenCheck(wbName) Path = "\\B" Workbooks.Open (Path & "\" & "b.xlsm") Debug.Print OpenCheck End Sub Public Function call_BookOpenCheck(wbName As String) As Boolean Dim temp As Workbook '■■ブックが開いていない状態として保存 call_BookOpenCheck = False For Each temp In Workbooks '■■指定されたブックが開いているかチェックする If temp.Name = wbName Then '■■■指定されたブックが開いていればTrueでFunctionを抜ける call_BookOpenCheck = True Exit Function End If Next temp End Function 5つのフォルダとフィル名は下記の様な感じです。 フォルダ ファイル名 1 A a 2 B b 3 C a 4 D d 5 E e
- みんなの回答 (3)
- 専門家の回答
お礼
回答ありがとうございます。 ”閉じられるまでの間ループで待機する必要” これがヒントになりました。 いろいろやってみたのですが、まだ完成していません。 ヒントをてがかりにやってみます。