Solved

Amend a create file vba sub

Posted on 2014-07-22
7
217 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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

Workbook link problems after copying tabs to a new workbook? David Miller (dlmille) Intro Have you either copied sheets to a new workbook, and after having saved and opened that workbook, you find that there are links back to the original sou…
Do you use a spreadsheet like Microsoft's Excel?  Have you ever wanted to link out to a non excel file on your computer or network drive?  This is the way I found to do it!
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

730 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