Solved

Amend a create file vba sub

Posted on 2014-07-22
7
219 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 10

Expert Comment

by:Gašper Kamenšek
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:Gašper Kamenšek
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
Technology Partners: 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:
Gašper Kamenšek 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

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

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

This code takes an Excel list of URL’s and adds a header titled “URL List”. It then searches through all URL’s in column “A”, looking for duplicates. When a duplicate is found, it is moved to the top of the list. The duplicate URL’s are then highlig…
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
This Micro Tutorial will demonstrate how to create pivot charts out of a data set. I also added a drop-down menu which allows to choose from different categories in the data set and the chart will automatically update.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

729 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