Hola,por decirlo asi nomas,ahi tenes un "quilombo" de IFs,es eso seguro fijate que hace cada uno,pero estan uno adentro del otro y eso debe hacer que no haga lo que vos queres,para reconocer el boton cancelar tenes que poner la propiedad
CancelError = True asi salta el error y lo podes captar con un simple
On Error Goto ..... por el numero del error y ahi le decis que haga lo que vos quieras.y para reconocer si el archivo ya existe hay qeu pasarle flagas al commondialog no es asi nomas,el flag es
cdlOFNOverwritePrompt te manda un mensaje si existe y si desea reemplazarlo...mejor leete como funciona el commondialog del guardar aca:
Control CommonDialog
igualmente yo no lo haria con el commondialog ,porque es necesario un ocx y es mejor hacerlo desde codigo con el api de windows,y no tendrias que llevar el ocx del commondialog tampoco.
saludos.