2016-08-24 51 views
0

我加入了一些我在SO上找到的代碼(特別是第8行的Dir()部分)。一旦'你想覆蓋文件'部分顯示如何獲得用戶按下的值(是,否,或取消)來應用更多的邏輯?這裏是我的代碼:從覆蓋對話框中獲取用戶值

Sub SaveFile(fName As String) 

cancelSave = False 
Retry: 
saveAsFileName = Application.GetSaveAsFilename(InitialFileName:=fName, FileFilter:="Excel Files (*.xlsx), *.xlsx") 
On Error Resume Next 
If saveAsFileName <> False Then 
    If Not Dir(saveAsFileName) <> vbNullString Then 
     ActiveWorkbook.SaveAs fileName:=saveAsFileName 
    Else 
     If Err.Number = 1004 Then 
     -----HERE, I want to find out if the user pressed yes, no, or cancel.----- 
     Else 
      ActiveWorkbook.SaveAs fileName:=saveAsFileName, FileFormat:=xlWorkbook, ConflictResolution:=xlLocalSessionChanges 
     End If 
    End If 
Else 
    cancelSave = True 
End If 

End Sub 

謝謝!

回答

0

我覺得這個解決它:

Sub SaveFile(fName As String) 

cancelSave = False 
Retry: 
saveAsFileName = Application.GetSaveAsFilename(InitialFileName:=fName, FileFilter:="Excel Files (*.xlsx), *.xlsx") 
If saveAsFileName <> False Then 
    If Not Dir(saveAsFileName) <> vbNullString Then 
     ActiveWorkbook.SaveAs fileName:=saveAsFileName 
    Else 
     On Error Resume Next 
     ActiveWorkbook.SaveAs fileName:=saveAsFileName, FileFormat:=xlWorkbook, ConflictResolution:=xlLocalSessionChanges 
     If Err.Number = 1004 Then 
      On Error GoTo 0 
      GoTo Retry 
     Else 
      On Error GoTo 0 
     End If 
    End If 
Else 
    cancelSave = True 
End If 

End Sub