Saving to a specific location

S

Sandy

Hi
I have a bit of code as part of a 'Sub'- namely:

ThisWorkbook.SaveCopyAs Filename:="PSA-" & inputText & ".xls"

which saves a copy of a workbook to the same folder that the original was
opened from, in this case -

'D:Sandy's Documents\All PSA'.

How can I adjust this to save the file in a specific location eg

'D:\Sandy's Documents\All PSA\PSA\Excel 95-2003'

Thanks
Sandy
 
R

Ron de Bruin

Hi Sandy

ThisWorkbook.SaveCopyAs Filename:="D:Sandy's Documents\All PSA\PSA-" & inputText & ".xls"
 
S

Sandy

Thanks Ron

I've just had another thought - is it possible to SaveAs to a folder that as
yet doesn't exist. Eg

"D\Sandy's Documents\All PSA\PSA\(--and then use the "inputText" to create
this folder--)"

Sandy
 
R

Ron de Bruin

You can create the folder with code first if it not exist

Sub testing()
Dim Dirname As String
Dirname = "D\Sandy's Documents\All PSA\PSA\" & inputText
If Not DirectoryExist(Dirname) Then
MkDir Dirname
End If
'your save line here
ThisWorkbook.SaveCopyAs Filename:=Dirname & "\testfile.xls"
End Sub


Function DirectoryExist(sstr As String)
'Tom Oglivy
Dim lngAttr As Long
DirectoryExist = False
If Dir(sstr, vbDirectory) <> "" Then
lngAttr = GetAttr(sstr)
If lngAttr And vbDirectory Then _
DirectoryExist = True
End If
End Function
 
S

Sandy

Hi Ron
Having a bit of bother piecing it all together - i have this at the moment,
but it returns a "Run-time error '76': Path not found" when it reaches
'MkDir DirName'- any thoughts?

Sub New_Name()

Open_All_Sheets

Application.ScreenUpdating = False

Application.EnableEvents = False

Dim inputText As String

inputText = Application.InputBox("Enter name here", _
"Person's Name", , , , , 2)

Sheets("Data Input").Range("D1:H1").Value = inputText


Application.Run "Lock_All_Sheets"

Application.EnableEvents = True

Application.ScreenUpdating = True


Dim Dirname As String
Dirname = "D\Sandy's Documents\All PSA\PSA-" & inputText & ""
If Not DirectoryExist(Dirname) Then
MkDir Dirname
End If
'your save line here
ThisWorkbook.SaveCopyAs Filename:="D:Sandy's Documents\All PGA\Personal
Golf Analyser-" & inputText & "\Personal Golf Analyser-" & inputText &
".xls"

ThisWorkbook.Close SaveChanges:=False

End Sub



Function DirectoryExist(sstr As String)
'Tom Oglivy
Dim lngAttr As Long
DirectoryExist = False
If Dir(sstr, vbDirectory) <> "" Then
lngAttr = GetAttr(sstr)
If lngAttr And vbDirectory Then _
DirectoryExist = True
End If
End Function

Sandy
 
S

Sandy

Sorry - wrong code should read as follows - but still produces same error at
MkDir after running thro the function

Sub New_Name()

Open_All_Sheets

Application.ScreenUpdating = False

Application.EnableEvents = False

Dim inputText As String

inputText = Application.InputBox("Enter name here", _
"Golfer's Name", , , , , 2)

Sheets("Data Input").Range("D1:H1").Value = inputText

Application.Run "Lock_All_Sheets"

Application.EnableEvents = True

Application.ScreenUpdating = True


Dim Dirname As String
Dirname = "D\Sandy's Documents\All PGA\ Personal Golf Analyser\Personal
Golf Analyser-" & inputText & ""
If Not DirectoryExist(Dirname) Then
MkDir Dirname
End If
'your save line here
ThisWorkbook.SaveCopyAs Filename:="D:Sandy's Documents\All PGA\Personal
Golf Analyser-" & inputText & "\Personal Golf Analyser-" & inputText &
".xls"

'ThisWorkbook.SaveCopyAs Filename:=Dirname & "\testfile.xls"

ThisWorkbook.Close SaveChanges:=False

End Sub

Function DirectoryExist(sstr As String)
'Tom Oglivy
Dim lngAttr As Long
DirectoryExist = False
If Dir(sstr, vbDirectory) <> "" Then
lngAttr = GetAttr(sstr)
If lngAttr And vbDirectory Then _
DirectoryExist = True
End If
End Function

Sandy
 
R

Ron de Bruin

Use this

Do you want inputtext as folder and also be a part of the file name ?
Is that correct



inputText = Application.InputBox("Enter name here", _
"Person's Name", , , , , 2)

Dirname = "D\Sandy's Documents\All PSA\PSA-" & inputText
If Not DirectoryExist(Dirname) Then
MkDir Dirname
End If
'your save line here
' dirname is the path so you only add the file name here
ThisWorkbook.SaveCopyAs Filename:=Dirname & "\Personal Golf Analyser-" & inputText & ".xls"
 
D

Dave Peterson

Watch your typing:

You need a colon after the drive letter and is there supposed to be a space
before the " Personal Golf Analyser" portion of the path.


Dirname = "D:\Sandy's Documents\All PGA\ Personal Golf Analyser\" _
& "Personal Golf Analyser-" & inputText

And if you use mkdir to make a folder, then each parent folder has to exist
before you can make the sub folder.

'assuming that there is a D: drive
on error resume next
mkdir "D:\Sandy's Documents"
mkdir "D:\Sandy's Documents\all pga"
mkdir "D:\Sandy's Documents\all pga\Personal golf analyser"
'... and so forth
On error resume next


This also assumes that there aren't any other errors that could happen (files
with the same name causing the mkdir to fail, permission restrictions, space
problems....)
 
S

Sandy

Yes Ron folder and filename.
Works perfectly now thanks for your expertise and patience.
Sandy
 
R

Ron de Bruin

Hi Sandy

Like Dave already posted the parent folder must exist
Also you can test if there is something in inputText and test if there are no wrong characters
to avoid errors.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top