Solved

Amend a create file vba sub

Posted on 2014-07-22
7
212 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
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 

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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

INDEX and MATCH can be used to great effect to replace HLOOKUP and VLOOKUP as it does not have the limitation of needing the data to be sorted so that the reference value is in the first column or row. It also has the ability to perform a bi-directi…
Improved? Move/Copy Add-in Replacement - How to avoid the annoying, “A formula or sheet you want to move or copy contains the name XXX, which already exists on the destination worksheet.” David Miller (dlmille)  It was one of those days… I wa…
This Micro Tutorial demonstrates how to create Excel charts: column, area, line, bar, and scatter charts. Formatting tips are provided as well.
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.

706 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now