View Full Version : Solved: Application.GetSaveAsFilename question
k13r4n
01-07-2009, 03:43 PM
Morning all
I was just wondering how i go about making the GetSaveAsFilename method to ask if you want to overwrite a file that already exists becuase all it does is return a string containing a filename.
So im asuming that i need to have some code that runs after the user clicks save, that checks if the file already exists, and then, if it does, brings up a msgbox to ask if they want to overright . If they click no, then it brings the 'save as' window back up.
Does this sound about right? If so how do i go about checking if a file exsists?
Or am i way off the mark here?
cheers :beerchug:
Kieran
lucas
01-07-2009, 03:46 PM
http://www.vbaexpress.com/forum/showthread.php?t=22581
k13r4n
01-07-2009, 04:31 PM
thanks for your reply lucas, i read throught the thread but i cant see an answer to my question.
Can you point me to the bit you were trying to show me?
cheers
kieran
Bob Phillips
01-07-2009, 04:44 PM
Dim ans As String
Dim Filename As Variant
Do
Filename = Application.GetSaveAsFilename( _
fileFilter:="Excel Files (*.xls), *.xl")
If Filename <> False Then
If Dir(Filename) <> "" Then
ans = MsgBox("Overwrite " & Filename & "?", vbYesNo, "Save file")
If ans = vbYes Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename
Application.DisplayAlerts = True
Exit Do
End If
Else
ActiveWorkbook.SaveAs Filename
End If
End If
Loop Until Filename = False
Artik
01-07-2009, 04:46 PM
My procedure is not likely to be optimal, but it works.:confused2 Sub AAA()
Dim newFname As Variant
Dim OK As Boolean
Do
newFname = Application.GetSaveAsFilename( _
fileFilter:="Excel Files (*.xls), *.xls")
If newFname = False Then
Exit Sub
ElseIf Dir(newFname) = "" Then
ThisWorkbook.SaveAs newFname
OK = True
Else
If MsgBox("File already exists!" & vbCr & _
"Overwrite?", vbExclamation + vbYesNo, "Save As") = vbYes Then
On Error Resume Next
Kill newFname
If Err = 0 Then
ThisWorkbook.SaveAs newFname
Else
ThisWorkbook.Save
End If
OK = True
On Error GoTo 0
End If
End If
Loop Until OK
End Sub
Artik
PS
xld was faster.
..::Edit
This piece of xld's code is better: Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename
Application.DisplayAlerts = True
:bow:
k13r4n
01-07-2009, 05:12 PM
actully i just worked out my own way using Dir() haha, and then just refreshed the thread and saw you guys had all replyed :cool:
Also i forgot to mention im not saving an excel file (my bad, sorry)
im just getting the filename/save location for the textfile that is created based on information on a spreadsheet.
anyway here is my solution (probably horribly structured)
Function BrowseForFolder() As Variant
Dim Filter
Dim FilterIndex
Dim Title
Dim OverRight
Filter = "Script Files (*.scr),*.scr,"
FilterIndex = 1
Title = "Save script File"
On Error Resume Next
GetFileName:
BrowseForFolder = Application.GetSaveAsFilename("", Filter, FilterIndex, Title)
If BrowseForFolder = False Then
GoTo IfFalse
End If
If Dir(BrowseForFolder) = "" Then
GoTo IfFalse
End If
If Dir(BrowseForFolder) <> "" Then
OverRight = MsgBox("File aready exists, Overwrite it?", vbYesNo + vbExclamation, "Overwrite File?")
End If
If OverRight = vbYes Then
GoTo IfFalse
Else
GoTo GetFileName
End If
IfFalse:
End Function
Like i said probably really bad...... but it works
thankyou for your replys
cheers
Kieran
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.