Доступ к VBA не находит файлы Excel на сервере при использовании планировщика заданий - PullRequest
0 голосов
/ 23 мая 2018

Здравствуйте. Я получаю ошибку 1004 при попытке запустить мой код через планировщик задач.Я могу запустить макрос, который выполняет код непосредственно из Access, и он работает нормально, но при запуске из планировщика задач он не найдет путь к файлу, и обработчик ошибок откроется и отправит мне электронное письмо.Есть мысли, как это исправить?Причиной открытия каждого из этих файлов Excel является запуск их VBA, который обновляет их до текста только из другого файла Excel, который содержит много сложных формул.Ссылка на файл Excel, в котором были все формулы, оказалась слишком медленной.

Вот код.

Option Compare Database
Option Explicit


Public Function UpdateData()

    Dim xlApp As Object
    Dim mail As CDO.Message
    Dim config As CDO.Configuration

    On Error GoTo 100

    Set xlApp = CreateObject("Excel.Application")

    With xlApp
        .Application.Visible = False
        .Workbooks.Open "V:\DHP\Boards\Access Data\CV1Data.xlsm"
        .Workbooks("CV1Data.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\CV2Data.xlsm"
        .Workbooks("CV2Data.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\CV3Data.xlsm"
        .Workbooks("CV3Data.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\CV4Data.xlsm"
        .Workbooks("CV4Data.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\602Data.xlsm"
        .Workbooks("602Data.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\PVGData.xlsm"
        .Workbooks("PVGData.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\PV24Data.xlsm"
        .Workbooks("PV24Data.xlsm").Save
        .Workbooks.Open "V:\DHP\Boards\Access Data\ReasonCodes.xlsm"
        .Workbooks("ReasonCodes.xlsm").Save
    End With

    xlApp.Quit

    Set xlApp = Nothing

    Application.SetOption "Auto compact", True
    Application.Quit
    Exit Function

100:

    Set mail = CreateObject("CDO.Message")
    Set config = CreateObject("CDO.Configuration")

    config.Fields(cdoSendUsingMethod).Value = cdoSendUsingPort
    config.Fields(cdoSMTPServer).Value = "mr.domain.com"
    config.Fields(cdoSMTPServerPort).Value = 25
    config.Fields.Update

    Set mail.Configuration = config

    With mail
        .To = "First.Last@Domain.com"
        .From = "First.Last@Domain.com"
        .Subject = "Error Occured - Error Number " & Err.Number
        .TextBody = "DHPTables Database -" & Err.Description
        .Send
    End With

    Set config = Nothing
    Set mail = Nothing

    Application.SetOption "Auto compact", True
    Application.Quit
End Function

1 Ответ

0 голосов
/ 23 мая 2018

На сайте Microsoft я обнаружил, что это невозможно для продуктов Office с установленным флажком «Запускать, вошел ли пользователь в систему или нет».Единственный способ сделать это - оставить пользователя в системе постоянно.Смотрите ответ от Марка Бернса.

https://social.msdn.microsoft.com/Forums/office/en-US/7d81395f-fc98-4e96-90e0-1331cb4dab3d/scheduled-macro-only-runs-if-user-is-logged-in-windows-server-2003r2?forum=accessdev

...