2013-04-09 116 views
3

所以我使用文件打開提示來收集文件名。 然後我在後臺實例中打開此文件,將信息解析爲字典並關閉文件。 這工作正常。 這個代碼是:VBA Excel文件打開提示取消錯誤

Application.FileDialog(msoFileDialogOpen).Show 
sFullName = Application.FileDialog(msoFileDialogOpen).SelectedItems(1) 

如果用戶按下取消,這顯然是一個可行的方案,我得到以下錯誤:

Invalid procedure call or argument 

我試圖改變「收集」線到:

If Application.FileDialog(msoFileDialogOpen).SelectedItems(1) Then sFullName = Application.FileDialog(msoFileDialogOpen).SelectedItems(1) 

但是,這仍然會帶來錯誤。即使禁用警報也會導致錯誤或'400'。 任何幫助如何使這個彈出或處理它將不勝感激。

回答

1

你可以使用GetSaveAsFilename

Dim strFileName As String 
strFileName = Application.GetSaveAsFilename 
If strFileName = "False" Then MsgBox "User cancelled" 
+0

大,工作。進一步添加了一些代碼,以幫助和它的竅門。 – grimchamp 2013-04-09 10:17:09

5

你需要檢查的範圍,以確定是否有任何選擇

with Application.FileDialog(msoFileDialogOpen) 

    .Show 

    if (.SelectedItems.Count = 0) Then 
     '// dialog dismissed with no selection 
    else 
     sFullName = .SelectedItems(1) 
    end if 
end with 
+0

謝謝你。 我很新vba excel,所以在格式化幫助表示讚賞。 目前我只是因爲某些原因真的在我的workbook_open()中使用with block。如果我將來做更多的項目,我應該開始更多地實施它 – grimchamp 2013-04-10 08:05:39