ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Excel "Save as" dialog - when file already exists (https://www.excelbanter.com/excel-programming/367638-excel-save-dialog-when-file-already-exists.html)

MattM[_2_]

Excel "Save as" dialog - when file already exists
 
Hi, I am trying to do something very simple: code up a "Save as" dialog with
a default filename. The code below nearly works.

With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "C:\Temp\Test.xls"
If .Show = -1 Then
.Execute
End If
End With

The problem is that if the file already exists, the user is asked a "do you
wish to overwrite?" question *twice* - the first time by the dialog and the
second by VBA on the "Execute". If the user responds "yes" followed by "no",
they get a runtime error "Method 'Execute' of 'FileDialog' failed."
What am I doing wrong?
I am using Excel 2002 Sp-2

Thanks in advance
MattM


NickHK

Excel "Save as" dialog - when file already exists
 
Matt,
I don't have a version of Excel that supports this method, but :
Dim Retval As Variant
With Application
Retval = .GetSaveAsFilename()
If Retval < False Then
On Error Resume Next
'.EnableEvents = False
ThisWorkbook.SaveAs Retval
'.EnableEvents = True
On Error GoTo 0
End If
End With
'Cancel = True

Uncomment the lines above if this is in a _BeforeSave event, to prevents the
second firing.

NickHK

"MattM" wrote in message
...
Hi, I am trying to do something very simple: code up a "Save as" dialog

with
a default filename. The code below nearly works.

With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "C:\Temp\Test.xls"
If .Show = -1 Then
.Execute
End If
End With

The problem is that if the file already exists, the user is asked a "do

you
wish to overwrite?" question *twice* - the first time by the dialog and

the
second by VBA on the "Execute". If the user responds "yes" followed by

"no",
they get a runtime error "Method 'Execute' of 'FileDialog' failed."
What am I doing wrong?
I am using Excel 2002 Sp-2

Thanks in advance
MattM




MattM[_2_]

Excel "Save as" dialog - when file already exists
 
Thanks for trying Nick. I used your idea to create the following:

Dim sFilename As String

With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "C:\Temp\Test.xls"
If .Show = -1 Then
sFilename = .SelectedItems(1)
End If
End With

If sFilename < "" Then
Application.EnableEvents = False
ActiveWorkbook.SaveAs Filename:=sFilename
Application.EnableEvents = True
End If

Unfortunately, this didn't work - I still got the "do you wish to replace"
message on the SaveAs.

The best I can come up with is this. Yuk!

Dim sFilename As String, fso

With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = "C:\Temp\Test.xls"
If .Show = -1 Then
sFilename = .SelectedItems(1)
End If
End With

If sFilename < "" Then
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(sFilename) Then
fso.DeleteFile (sFilename)
End If

ActiveWorkbook.SaveAs Filename:=sFilename
End If

Cheers
MattM



MattM[_2_]

Excel "Save as" dialog - when file already exists
 
Nick - my apologies, your answer was spot on. The trick is to use your
GetSaveAsFilename, in preference to my FileDialog(msoFileDialogSaveAs). This
doesn't show a "do you wish to replace" query, hence the message on SaveAs is
the only one! All I needed was

Dim Retval As Variant

With Application
Retval = .GetSaveAsFilename("C:\Temp\Test.xls")
If Retval < False Then
ThisWorkbook.SaveAs Retval
End If
End With

Simpler code too. Many thanks!
MattM



All times are GMT +1. The time now is 12:17 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com