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

У меня есть скрипт в Access, который должен циклически просматривать файлы Excel на общем сетевом диске, открывать и сохранять их.

При запуске сценария в локальной папке он работает как положено, но при запуске его на сетевом диске появляется всплывающее окно: «Файл с таким именем уже существует в этом месте, хотите ли вы его сохранить?в любом случае?Когда я нажимаю да, всплывающее окно закрывается, но после проверки метки времени файлы не перезаписываются.

Вот сценарий:

Sub demo()
Dim directory As String, fileName As String
Dim Mywb As Workbook
Dim app As New Excel.Application
app.Visible = True
directory = "Y:\E. Data Hub\4. KPIs\C. Price Competitiveness\2018\07 July\DT\"
fileName = Dir(directory & "*.xls")

Do While fileName <> ""
Workbooks.Open (directory & fileName)
fileName = Dir()
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.Save
ActiveWorkbook.Close
Loop

app.Quit


End Sub

В идеале я бы даже не получил этивсплывающие окна, которые я должен подтвердить вручную и, конечно, файлы должны быть сохранены / перезаписаны.

Редактировать: Я думаю, что проблема, кажется, в том, что файлы открываются в режиме только для чтения.Я попытался исправить эту проблему, добавив «ReadOnly: = False, Notify: = False» к моей команде Workbooks.Open, но это не работает, и файлы по-прежнему открываются в режиме только для чтения.

Второе редактирование:Проверьте ниже решение, я ответил на свой вопрос.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Я нашел решение своей конкретной проблемы, поэтому для тех, у кого в будущем возникнет такая же проблема: для меня проблема была результатом открытия файлов в режиме «только для чтения» в Excel.

Комурешить эту проблему я включил

ActiveWorkbook.LockServerFile

в свой цикл.

Это эквивалент нажатия кнопки «Изменить рабочую книгу» в Excel.Мой полный код теперь выглядит так:

Sub demo()

Dim directory As String, fileName As String
Dim Mywb As Workbook
Dim app As New Excel.Application
app.Visible = True
directory = "Y:\E. Data Hub\4. KPIs\C. Price Competitiveness\2018\07 July\DT\"
fileName = Dir(directory & "*.xls")
Application.Echo False
DoCmd.SetWarnings False

Do While fileName <> ""

Workbooks.Open (directory & fileName)
fileName = Dir()
ActiveWorkbook.LockServerFile
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.Save
ActiveWorkbook.Close

Loop

app.Quit
DoCmd.SetWarnings True
Application.Echo True

End Sub
0 голосов
/ 24 августа 2018

Вы можете остановить большинство сообщений, которые запрашивает пользователь, переключив эту опцию:

Application.DisplayAlerts

, поэтому в вашем коде это будет выглядеть так:

Public Sub demo()

    Dim directory As String, fileName As String
    Dim Mywb As Workbook
    Dim app As New Excel.Application
    app.Visible = True

    directory = "Y:\E. Data Hub\4. KPIs\C. Price Competitiveness\2018\07 July\DT\"
    fileName = Dir(directory & "*.xls")

    Application.DisplayAlerts = False

    Do While fileName <> ""
        Workbooks.Open directory & fileName
        fileName = Dir()
        ActiveWorkbook.CheckCompatibility = False
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    Loop

    Application.DisplayAlerts = True
    app.Quit

End Sub
...