Solved

Amend a create file vba sub

Posted on 2014-07-22
7
216 Views
Last Modified: 2014-07-22
I have the below sub which i need amending, i need the code to recognise thats its 2014 and the month, so next month it would save the file in the folder ("\\ukxyzmdata23456\rights\debt2014\201407\", "The file")

Im not sure there is a need for the function as i have no requirement to save the file with any day difference

Many thanks

------------------------------------------

Sub CreateFile()
Dim strFile As String
strFile = Date_FileName("\\ukxyzmdata23456\rights\debt\2014\201406\", "The file ")

If Dir(strFile) <> "" Then
   If MsgBox("File already exists - overwrite?", vbYesNo) = vbYes Then
      Kill strFile
     

   Else
      Exit Sub
   End If
End If
ActiveWorkbook.SaveAs Filename:= _
strFile, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False




End Sub

Function Date_FileName(pPath As String, pFilePrefix As String) As String
Dim DayOfWeek As Integer, DayDiff As Integer, CharDate As String, MonthNo As Integer, CharYear As String, CharMonth  As String
Dim Result As String
   
    DayOfWeek = Weekday(Date)                                   ' Sunday is 1, Monday is 2, Tuesday is 3 etc
    If DayOfWeek = 2 Then                                       ' If a monday then we need the date as of friday, otherwise previous day
        DayDiff = 3
    Else
        If DayOfWeek = 1 Then
          DayDiff = 2                                           ' If a Sunday then we need the date as of friday, otherwise previous day
        Else
          DayDiff = 1                                           ' otherwise it should be set to the previous day
        End If
    End If
                 ' Get the character date formwatted how we want
    CharMonth = Format(Date - DayDiff, "m mmm yyyy")
    CharDate = Format(Date - DayDiff, "dd mmm yy")
    Result = pPath & CharMonth & "\" & pFilePrefix & "" & CharDate & ".xls"
    Date_FileName = Result
End Function
0
Comment
Question by:Seamus2626
  • 4
  • 3
7 Comments
 
LVL 10

Expert Comment

by:GasperK
ID: 40210951
Hi,

all you need is a

yearmonth = Format(Date, "yyyymm")

and then a

strFile = Date_FileName("\\ukxyzmdata23456\rights\debt\2014\" & yearmonth & "\", "The file ")

Hope this helps
0
 

Author Comment

by:Seamus2626
ID: 40210956
Hi GasperK,

I dont mean to be lazy or stupid, but i am still relatively new to VBA, could you work that line into my code or show it as it would appear in a stand alone sub?

Thanks!
0
 
LVL 10

Expert Comment

by:GasperK
ID: 40210968
Sub CreateFile()
Dim strFile As String

yearmonth = Format(Date, "yyyymm")

strFile = "\\ukxyzmdata23456\rights\debt\2014\" & yearmonth & "\The file"


If Dir(strFile) <> "" Then
   If MsgBox("File already exists - overwrite?", vbYesNo) = vbYes Then
      'Kill strFile
     

   Else
      Exit Sub
   End If
End If
ActiveWorkbook.SaveAs Filename:=strFile

End Sub

Open in new window


This is basically it, the kill file and some other parts of the code were not ok, so i added a comment to that or just deleted it, but the rest should work.
Try it out...
0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:Seamus2626
ID: 40211017
Hi GasperK,

I have created the below sub, and am getting the message "Bad file name or number"




Sub CreateFile2()
Dim strFile As String

yearmonth = Format(Date, "yyyymm")

strFile = "\\R:\SPM\Monthly_Inputs\2014\Reporting" & yearmonth & "\The file.xlsx"


If Dir(strFile) <> "" Then
   If MsgBox("File already exists - overwrite?", vbYesNo) = vbYes Then
      'Kill strFile
     

   Else
      Exit Sub
   End If
End If
ActiveWorkbook.SaveAs Filename:=strFile

End Sub
0
 

Author Comment

by:Seamus2626
ID: 40211021
I have this sub for opening files in the same folder

FileYear = Year(Date)

MonthOffset = 0
If Day(Date) = 1 Then MonthOffset = 1
FileMonth = Month(Date) - MonthOffset
FileDate = Format(Date - 1, "yyyymm")
FilePath = "R:\SPM\Monthly_Inputs\" & FileYear & "\" & FileDate & "\Reporting\June_2014_Win_Loss_Jack.xlsx"

Workbooks.Open (FilePath)

Could you amend so it doesnt open the file, but saves as into that folder?

Thanks
0
 
LVL 10

Accepted Solution

by:
GasperK earned 500 total points
ID: 40211147
You keep all declarations the same and replace the
Workbooks.Open (FilePath)
line with the
ActiveWorkbook.SaveAs Filename:=FilePath

Kind regards

PS: I think it would be wise to do a Format(Date-1,"mmmm") for the automatization of the file name "June_2014...
0
 

Author Closing Comment

by:Seamus2626
ID: 40211157
Thanks!
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
This article will guide you to convert a grid from a picture into Excel format using Microsoft OneNote and no other 3rd party application.
This Micro Tutorial will demonstrate in Google Sheets how to use the HYPERLINK function to create live links inside your spreadsheet.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

827 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question