Ошибка во время выполнения «1004» Не удалось получить доступ к файлу. Попробуйте одно из следующего: - PullRequest
0 голосов
/ 11 июня 2019

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

Все работало идеально, пока я не запустил код, а затем сохранил его, и теперь я получаю эту ошибку.

Sub CommandButton1_Click()
Dim path As String
Dim filename1 As String



path = "C:\Users\100020427\Desktop\FPYFiles\"

filename1 = ThisWorkbook.Sheets("Totals").Range("M10").Text
Application.DisplayAlerts = False
If ThisWorkbook.Name = filename1 Then
    ThisWorkbook.save
    MsgBox "Today's Form has been saved! Click Ok Button"
Else
    ThisWorkbook.SaveAs Filename:=path & filename1, FileFormat:=52, CreateBackup:=False
    MsgBox "Today's Form has been saved! Click Ok Button"
    Application.DisplayAlerts = True
End If
'Application.DisplayAlerts = False
'ActiveWorkbook.save Filename:=path & filename1, FileFormat:=52, CreateBackup:=False
'Application.DisplayAlerts = True

Application.OnTime Now + TimeValue("00:01:00"), "CommandButton1_Click"
End Sub

Sub Workbook_Open()
CommandButton1_Click
Application.OnTime Now + TimeValue("00:01:00"), "CommandButton1_Click"
End Sub

Я ожидаю сохранить рабочую книгу как дату в указанном месте

enter image description here

1 Ответ

2 голосов
/ 11 июня 2019

Если я правильно понимаю ваши настройки, вы вводите команду SaveAs каждые 10 минут, и имя файла будет содержать текущую дату.Таким образом, имя файла остается одним и тем же в течение всего дня, и это приведет к сбою, когда SaveAs выдается во второй раз.

Почему?Вы просите Excel перезаписать существующий файл.Когда вы подавляете предупреждения, вы не увидите сообщение «Файл уже существует, вы хотите заменить его?» .Затем Excel пытается перезаписать последнюю версию файла текущей, но, поскольку файл (очевидно) открыт, это не удастся.если вы действительно напишите новый файл.Во всех остальных случаях используйте Save вместо SaveAs.Обратите внимание, что я добавил расширение к имени файла, чтобы проверка прошла успешно.Я также полностью определил ячейку, в которой ожидается имя файла, чтобы код не переставал работать, когда в данный момент активен другой лист или книга.

fileName1 = ThisWorkbook.Sheets(1).Range("M10") & ".xlsm"

If ThisWorkbook.Name = fileName1 Then
    ThisWorkbook.Save
Else
    ThisWorkbook.SaveAs path & fileName1, 52
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...