2017-02-17 24 views
0

Привет всем (экспертов и тех, кто умнее меня),Как разрешить отменить, чтобы быть выбран в файл Windows, диалоговое окно грациозно

Я бегу на вопрос где, когда я ударил отменить для открытия файла окон Диалог, он отлаживает эту строку. Что я хочу сделать, я хочу добавить какое-то «исключение», где, если я нажму «Отмена» на «Диалог открытия файла», он не даст мне «Ошибка времени выполнения» 1004 »и имеет опцию «End» «Debug» и «Help», но вместо этого, когда пользователь нажимает на отмену, он выходит изящно. Это в VBA. Возможно ли это? Я искал и не мог найти подход, который работал, поскольку это единственный случай. Я просто не хочу, чтобы «пользователь» должен был быть вынужден смотреть на код, если они передумают в «открытии» файла, а вместо этого позволяют им изящно выйти и все еще смотреть на главную книги Excel, они были первоначально

Workbooks.OpenText Filename:=strFileToOpen, StartRow:=11, DataType:=xlDelimited, Tab:=True, TrailingMinusNumber:=True 
+1

Если вы включаете код, в котором вы вызываете диалог открытия файла, или, по крайней мере, где вы устанавливаете 'strFileToOpen' на основе результатов этого диалога, мы можем порекомендовать некоторые изменения. (Я не уверен, ** который ** Диалоговое окно открытия файла, которое вы используете, - 'Application.FileDialog (msoFileDialogOpen)' или 'Application.GetOpenFilename', или может быть еще один или два) – YowE3K

+0

На самом деле не имеет значения, какой файл, который вы выбрали для использования в качестве встроенной справки или интерактивной справки, включает пример, который показывает, как определить, было ли отменено диалоговое окно. Вы искали соответствующую информацию? Если да, что вы не поняли? Если вы не посмотрели, почему бы и нет? – TnTinMn

ответ

0

При нажатии кнопки Отмена, диалог GetOpenFilename возвращает "FALSE" Попробуйте это:..

Sub CancelFileOpenGracefully() 
Dim strFileToOpen As String 


    On Error GoTo GracefulExit: 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
    strFileToOpen = Application.GetOpenFilename 
    'Test if user didn't hit Cancel and run your code 
    If strFileToOpen <> "FALSE" Then 
     Workbooks.OpenText Filename:=strFileToOpen, StartRow:=11, DataType:=xlDelimited, _ 
     Tab:=True, TrailingMinusNumbers:=True 
      'Do things 
    End If 
GracefulExit: 
    Application.ScreenUpdating = True 
    Application.EnableEvents = True 
End Sub