Я унаследовал проект Excel, который мне поручено автоматизировать и развивать.
Вариант использования
- Приходит заказ
- Пользователь открывает базу (root)файл Excel
- вводит соответствующую информацию (клиент, заказ, данные, задачи и т. д.)
- и сохраняет новый файл задач в папке с выполняющимися задачами
- оставляет базовый (корневой) Excelосновной и готов к следующему заказу.
Новый файл задачи должен иметь определенную структуру имени файла, которая была отсортирована.
Моя проблема связана с именем файла ActiveWorkbook.SaveAs.
По мере выполнения(F5) строк, он проходит через все шаги, создает имя файла, показывает пользовательский интерфейс Save As, правильно показывает правильную папку и предлагаемое имя файла, и фактически сохраняет файл.Как я вышел из ErrHandler и последнего Application.EnableEvents = yes - он вылетает.Кажется, он либо закрывает базовый файл, открывая новый, либо переносит активную книгу в новый файл сохранения.
Это нормально, если он может прекратить сбой.
If criticalInput then
Msgbox “U been bad, U Shall not PASS!”, vbCritical ‘Not actual text or box showing, just for demo.
Else
Dim fileSaveName As Variant
'### It Crashes after saving (possible at opening)
fileSaveName = Application.GetSaveAsFilename( _
InitialFileName:=tasksfolder & "\" & suggestFilename, _
fileFilter:="Excel-projectmappe med aktive makroer (*.xlsm), *.xlsm")
If fileSaveName False Then
'### here is where you would save your file
DoEvents ‘ Debugging research tells this should be here. Not that is changes anything.
ActiveWorkbook.SaveAs fileSaveName ‘ During dev this has been disabled.
End If ' SaveAs
End If ' criticalInput
ErrHandler:
'## Reset back to default
Application.DefaultFilePath = strDefault
Application.EnableEvents = True
End Sub
Отладка
- я могу просто сохранить файл, если отключу SaveAs и работаю только с базовым (корневым) файлом Excel.
- Я могу открыть новый файл задачи и сохранить его.(Просто извиняюсь за перезапись, да / нет)
- В исследовании отладки говорилось, что мне нужно DoEvents до SaveAs
- В исследовании отладки также говорится, что присутствуют только наиболее релевантные ссылки (в моем случае отмените выбор OLE Automation)
- Во время отладки я также создал AfterSave () и Open ().Обычно они запускаются при нормальной работе, но не работают, когда происходит сбой SaveAs.Например, когда я отключаю SaveAs или когда я обычно открываю книгу Excel.
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
On Error GoTo ErrHandler<br>
If Success Then
Application.EnableEvents = False
'MsgBox "Success save", vbInformation ' for debugging purposes.
End If<br>
ErrHandler:
Application.EnableEvents = True
End Sub
Private Sub Workbook_Open()
'MsgBox "I haz been opened, yehawww", vbInformation ' debugging
End Sub