He usado la llamada al sub que me has puesto que no sabía como hacerlo y la he adaptado al código que tenía, porque lo que yo quiero es que al darle a "Guardar", si el archivo ya ha sido guardado, lo sobreescriba sin preguntar, y que al darle a "Guardar como" ya si abra el cuadro de diálogo de guardar. Pego el código utilizado por si a alguien le vale.
Y una vez más, gracias Lokoman. Me gustaría enviarte la aplicación que estoy haciendo para que le eches un vistazo aunque aun no esté acabada del todo, ya que me has ayudado muchas veces y sin tu ayuda y la de todos los del foro no se si hubiera sido capaz de sacarla adelante.
Código:
'CODIGO "GUARDAR"
Private Sub GuardarPresupuesto_Click()
Dim sFile As String
Dim fso As Object
Dim canalLibre As Integer
If guardar = 0 Then 'Archivo todavía no guardado
With dlgCommonDialog
.DialogTitle = "Guardar"
.CancelError = False
'Pendiente: establecer los indicadores y atributos del control common dialog
.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*"
.ShowSave
If Len(.FileName) = 0 Then
Exit Sub
End If
sFile = .FileName
End With
Set fso = CreateObject("Scripting.FileSystemObject")
' Comprobar archivo
If fso.FileExists(sFile) = "Verdadero" Then
If MsgBox("El archivo ya existe. ¿Desea reemplazarlo?", vbExclamation + vbYesNo, "Reemplazar Archivo") = vbYes Then
'LLAMADA AL SUB GUARDAR_DATOS
GUARDAR_DATOS sFile
End If
End If
End If
If guardar = 1 Then 'Archivo ya guardado
'LLAMADA AL SUB GUARDAR_DATOS
GUARDAR_DATOS NombreArchivo
End If
End Sub
Código:
'CÓDIGO "GUARDAR_COMO"
Private Sub guardar_como_Click()
Dim sFile As String
With dlgCommonDialog
.DialogTitle = "Guardar"
.CancelError = False
'Pendiente: establecer los indicadores y atributos del control common dialog
.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*"
.ShowSave
If Len(.FileName) = 0 Then
Exit Sub
End If
sFile = .FileName
End With
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' Comprobar archivo
If fso.FileExists(sFile) = "Verdadero" Then
If MsgBox("El archivo ya existe. ¿Desea reemplazarlo?", vbExclamation + vbYesNo, "Reemplazar Archivo") = vbYes Then
'LLAMADA AL SUB GUARDAR_DATOS
GUARDAR_DATOS sFile
End If
Else
GUARDAR_DATOS sFile
End If
End Sub
Código:
'SUB GUARDAR DATOS
Sub GUARDAR_DATOS(sFile As String)
Dim canalLibre As Integer
canalLibre = FreeFile
Open sFile For Output As #canalLibre
Print #canalLibre, TIpoTrabajo
Print #canalLibre, Cantidad_TextBox
Print #canalLibre, TipoPapel
Close #canalLibre
guardar = 1
NombreArchivo = sFile
SaveSetting "RutaArchivo", "Valores", "Path", txtruta.Text
SaveSetting "NombreArchivo", "Valores", "Path", txtarchivo.Text
End Sub
Código:
'A COLOCAR EN EL FORM LOAD
Private Sub Form_Load()
txtruta.Text = GetSetting("RutaArchivo", "Valores", "Path", "NO_HAY_PATH")
txtarchivo.Text = GetSetting("NombreArchivo", "Valores", "Path", "NO_HAY_PATH")
guardar = 0 '0 sin guardar previamente. 1 guardado
End Sub