2017-02-17 31 views
0

您好所有(專家和那些比我聰明)來選擇,如何允許取消對在Windows文件對話框優雅

我遇到了一個問題,當我打取消對Windows的「打開文件」對話框,它調試到這一行。我想要做的是,我想添加某種'例外',如果我將「取消」打到「文件打開」對話框,它不會給我一個「運行時錯誤'1004':並且有選項「結束」「調試」和「幫助」,但相反,當用戶點擊取消時,它優雅地退出。這是在VBA。這是可能的嗎?我搜索周圍,無法找到一種方法,因爲這是一個獨特的例子,我只是不想讓'用戶'被迫去查看代碼,如果他們在文件的'Opening'中改變主意,而是讓他們優雅地退出並且仍然看着主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