0

Can Openerタスクスケジューラによって開かれるというタイトルのExcelブックがあります。タスクスケジューラがアクセスできない共有ドライブで別のブックを開き、それ自体を閉じます。 正常にCan Opener動作します。私が抱えている問題は、他のブックにコードがあり、開いたときに、システム時刻が午後7時の場合、サーバーから新しいデータを取得するために更新マクロを実行することです。これが完了すると、ファイルが保存されて閉じられます。データブックは開きますが、更新は行われておらず、自動的に保存および閉じられません。少なくとも更新されるようにコードを分解することにしましたが、これも機能していません。いくつかのフォーラムや他の場所をチェックしましたが、まだ問題が何であるかを理解できません。少し助けてもらえますか?

    Sub DataBook_Open()

Application.EnableCancelKey = xlDisabled

   If Hour(Now) = 7 And Weekday(Now, vbSunday) < 7 Then

       Run_Update

            Me.Save

            Application.Quit

    Else:   Me.Save
            Application.Quit

   End If



End Sub

Run_Updateは、サーバー接続を作成してSQLを実行するモジュール内の他のマクロを実行するだけのモジュール内のマクロの名前です。これは、手動で実行した場合、またはボタンを使用して実行した場合に正常に機能するため、エラーがここにないことはわかっています。また、私はこのコードを毎晩午後7時に実行しようとしています。

私は私が人を得ることができるどんな助けにも本当に感謝します。

4

1 に答える 1

2

DataBook_Open()が実行されますか?Auto_Open()またはWorkbook_Open()から呼び出していない限り、そうではない可能性があります。

この最小限のテストファイルを試してください。パスを実際のフォルダーに置き換えます。

--can_opener.xlsm--

Sub OpenOtherWorkbook()

  Dim sWbkPath As String
  sWbkPath = ThisWorkbook.Path & "\" & "test_data.xlsm"

  Dim wbkData As Workbook
  Set wbkData = Workbooks.Open(sWbkPath)

End Sub

--test_data.xlsm--ThisWorkbookオブジェクト内

Private Sub Workbook_Open()

  If Hour(Now) = 9 Then 'replace with your condition
      UpdateData
      ThisWorkbook.Save
      DoEvents
  Else
      DoEvents
  End If

  ThisWorkbook.Close
  'Application.Quit

End Sub

Sub UpdateData()

  ThisWorkbook.Sheets(1).Range("A1").Value = Format(Now, "yyyy-mm-dd:hh\hmm")

End Sub
于 2013-02-22T15:00:33.523 に答える