Добрый вечер! Благодаря планете при импортировании данных в свои userform из других файлов excel пользовалась нижеприведенным макросом. Макрос запускается прямо с userform по кнопке. Для правильного импорта было необходимо проверить, является ли выбранный пользователем файл корректным путем обращения к содержимому "проверочной" ячейки на скрытом листе.
Для этого надо было учесть что нужного листа может не быть (при выборе некорректного файла).
До недавнего времени все прекрасно работало, однако в новом проекте потребовалось запускать макрос несколько раз подряд, импортируя данные из новых и новых файлов и процесс стал зависать, соскакивая на невыключающееся MsgBox со строки "L1: ".
При Ctrl+Break дебаггер выделяет элемент ": Resume L2" этой строки.
Отыскать косяк в алгоритме не могу - помогите, пожалуйста!
Sub Import_Calc()
Dim tip As Integer
Dim fName As String
fName = GetFileName
On Error GoTo L1
If Len(fName) Then
With GetObject(fName)
With .Sheets("СкрытыйЛист")
Application.EnableEvents = False
Application.ScreenUpdating = False
If .[C1] = "проверка" Then
MsgBox "Перенос данных запущен."
[перенос данных]
MsgBox "Перенос данных успешно завершен."
Else
MsgBox "Выбранный файл не может использоваться для переноса данных."
Exit Sub
End If
Application.EnableEvents = True
End With
L2: .Close False
End With
End If
L1: If Err Then MsgBox "Выбранный файл не может использоваться для переноса данных.", vbCritical: Resume L2
End Sub
Для этого надо было учесть что нужного листа может не быть (при выборе некорректного файла).
До недавнего времени все прекрасно работало, однако в новом проекте потребовалось запускать макрос несколько раз подряд, импортируя данные из новых и новых файлов и процесс стал зависать, соскакивая на невыключающееся MsgBox со строки "L1: ".
При Ctrl+Break дебаггер выделяет элемент ": Resume L2" этой строки.
Отыскать косяк в алгоритме не могу - помогите, пожалуйста!
Sub Import_Calc()
Dim tip As Integer
Dim fName As String
fName = GetFileName
On Error GoTo L1
If Len(fName) Then
With GetObject(fName)
With .Sheets("СкрытыйЛист")
Application.EnableEvents = False
Application.ScreenUpdating = False
If .[C1] = "проверка" Then
MsgBox "Перенос данных запущен."
[перенос данных]
MsgBox "Перенос данных успешно завершен."
Else
MsgBox "Выбранный файл не может использоваться для переноса данных."
Exit Sub
End If
Application.EnableEvents = True
End With
L2: .Close False
End With
End If
L1: If Err Then MsgBox "Выбранный файл не может использоваться для переноса данных.", vbCritical: Resume L2
End Sub