Можно ли с помощью vba открывать несколько книг Excel из одной и той же папки и держать их открытыми одновременно? - PullRequest
0 голосов
/ 13 октября 2019

Это не первый раз, когда я задаю этот вопрос, но я немного изменил детали, чтобы, надеюсь, прояснить его. Вот одна из версий кода, которые я пробовал:

Private Sub OpenWbsInPath(zPath As String)
Dim zFile As String
zPath = IIf(Right$(zPath, 1) = "\", zPath, zPath & "\")   ' Ensure zPath ends with "\".
zFile = Dir(zPath & "*.xls*")                             ' "xxxx\*.xls*". OK.
Do While zFile <> ""
    Workbooks.Open Filename:=zPath & zFile      ' Fails with error 1004 on 2nd iteration.
    DoEvents                                    ' Makes no difference.
    zFile = Dir()                               ' Next filename. Path also OK.
Loop
End Sub

Я также пробовал аналогичную процедуру, используя CreateObject("Scripting.FileSystemObject"). На всех подходах, которые я пробовал до сих пор, включая тот, в котором я сначала создал массив имен файлов, а затем попытался открыть каждый файл по отдельности, первый файл открывается ОК, затем следующий файл не открывается с ошибкой 1004. Действительно странноДело в том, что в более старой версии программы все файлы открываются ОК. Я даже пытался скопировать идентичный код, но он все еще не работает в новом месте. У меня заканчиваются идеи - нужно ли создавать временную папку для каждой книги, прежде чем я ее открою? Кажется сумасшедшим.

1 Ответ

0 голосов
/ 13 октября 2019

Я запустил ваш код и могу подтвердить, что он работает нормально, если файлы открываются, и выдает ошибку 1004, если не может.

Возможные причины невозможности открытия файла:

  1. , он поврежден или.
  2. это уже открыто.

Файл не может быть открыт, если:

  1. вы или ваш код уже открыли его (файл, содержащий код, также находится в папке?),
  2. у кого-то еще он открыт (папка общая?),
  3. у другого экземпляра Excel он открыт (проверьте диспетчер задач на наличие дополнительных экземпляров).

Можете ли вы вручную открыть файл, в котором произошел сбой кода? Добавьте z-файл Debug.Print перед открытием, чтобы увидеть, какой файл завершился ошибкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...