2012-07-31 3 views
2

을 대체 할 "아니오"를 클릭하면 메시지 상자를 저장 돌아올 방법, 나는 다음과 같은 코드를 사용하여 파일을 저장하고있다 : 이미 선택한 이름이 존재 때까지엑셀 VBA에서 파일

fullFileName = Application.GetSaveAsFilename(...) 
ActiveWorkbook.SaveAs fullFileName 

이 잘 작동을 . 그런 다음 메시지 상자에 "파일을 바꿔야합니까?"라는 메시지가 나타납니다. No에 응답하고 이전 메시지 상자로 돌아가서 다른 이름을 선택하고 싶습니다.

대신 No을 클릭하면 매크로가 인터럽트되고 오류가 발생합니다.

어떻게 해결할 수 있습니까?

는 (웹은 Application.DisplayAlerts=False를 사용하여이 메시지 상자를 무시하고 어쨌든 저장하는 방법을 보여주는 예제로 가득하다. 이것은 내가 원하는 것이 아니다!)

답변

3

이 내가 무엇을 사용 일반적으로 ...

Sub Sample() 
    Dim fullFileName 

    fullFileName = Application.GetSaveAsFilename(_ 
        fileFilter:="Text Files (*.txt), *.txt") 
    If fullFileName <> False Then 
     If fileExists(fullFileName) = False Then 
      ActiveWorkbook.SaveAs fullFileName 
     Else 
      MsgBox "File Exists. File Save Aborted" 
     End If 
    End If 
End Sub 

Public Function fileExists(strFullPath As Variant) As Boolean 
    On Error GoTo Whoa 
    If Not Dir(strFullPath, vbDirectory) = vbNullString Then fileExists = True 
Whoa: 
    On Error GoTo 0 
End Function 

따르기

이 뜻입니까?

Sub Sample() 
    Dim fullFileName 
    Dim conti As Boolean 

    conti = True 

    Do While conti = True 
     fullFileName = Application.GetSaveAsFilename(_ 
         fileFilter:="Text Files (*.txt), *.txt") 
     If fullFileName <> False Then 
      If fileExists(fullFileName) = False Then 
       ActiveWorkbook.SaveAs fullFileName 
       conti = False 
      Else 
       MsgBox "File Exists. Returning you back to the dialog box" 
      End If 
     Else 
      conti = False 
     End If 
    Loop 
End Sub 

Public Function fileExists(strFullPath As Variant) As Boolean 
    On Error GoTo Whoa 
    If Not Dir(strFullPath, vbDirectory) = vbNullString Then fileExists = True 
Whoa: 
    On Error GoTo 0 
End Function 
+0

감사 Siddhart. 코드가 있으면 파일이 존재하면 저장이 중단됩니다. "아니오, 기존 파일을 바꾸고 싶지 않습니다"를 클릭하고'GetSaveAsFilename' 대화 상자로 돌아갈 수 있습니까? – Nicolas

+0

위의 추가 정보를 참조하십시오. –

+0

그게 전부입니다. 빠른 답장을 보내 주셔서 감사합니다! – Nicolas