j.smith1981
04-03-2009, 03:44 AM
I have a big report to complete in VBA that automates the entire process of import products into our ecommerce site.
The purchasing manager requires (and I mean demands) that we record the prices changes accordingly.
The only problem is, I save the new report as per below:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=reportLoc & Format(Time, "hh-mm_") & Format(Date, "dd-mm-yyyy") & "_Price_REPORT.csv", FileFormat:=xlCSV, CreateBackup:=False 'This saves an autoincremented file report to the destination folder
reportWB = Application.ActiveWorkbook ' THIS REFUSES TO WORK
Saving the new generated file to a variable to pick up later on, as per the below macro.
Sub comparevalues()
Application.DisplayAlerts = False
Dim fileLoc As String
Dim reportLoc As String
Dim lastCSV As String
Dim prevCSV As String
fileLoc = ThisWorkbook.Path & "\" 'Saves location of import macro to variable
reportLoc = ThisWorkbook.Path & "\PriceREPORT\"
Cells(21, 5).Select 'selects E21 (last CSV processed)
lastCSV = ActiveCell.Value 'Saves value as variable
Cells(22, 5).Select
prevCSV = ActiveCell.Value
Application.Workbooks.Open (fileLoc & "\" & lastCSV) 'Opens last generated CSV file!
Application.Workbooks.Open (fileLoc & "\" & prevCSV) 'Opens one before the last generated to compare values!
Workbooks.Add 'Adds a workbook (general adding like file new!)
'filePath = ThisWorkbook.Path & "\" ' location of this file ALREADY DONE PREVIOUSLY?
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=reportLoc & Format(Time, "hh-mm_") & Format(Date, "dd-mm-yyyy") & "_Price_REPORT.csv", FileFormat:=xlCSV, CreateBackup:=False 'This saves an autoincremented file report to the destination folder
reportWB = Application.ActiveWorkbook
Application.Workbooks(lastCSV).Activate
Range("B:C").Select
Selection.Copy
Application.Workbooks("report.xls").Activate
Cells(1, 1).Select
ActiveSheet.Paste
Application.Workbooks(lastCSV).Activate
Range("M:M").Select
Selection.Copy
Application.Workbooks("report.xls").Activate
Cells(1, 3).Select
ActiveSheet.Paste
Application.Workbooks(prevCSV).Activate
Range("M:M").Select
Selection.Copy
Application.Workbooks("report.xls").Activate
Cells(1, 4).Select
ActiveSheet.Paste
'Loop to do calculation
Cells(3, 5).Select
Do
ActiveCell.FormulaR1C1 = "=(RC[-2]-RC[-1])"
ActiveCell.Offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.Offset(0, -1))
Workbooks(lastCSV).Close SaveChanges:=False
Workbooks(prevCSV).Close SaveChanges:=False
Call ifValue
End Sub
Sub ifValue()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = True
End With
Application.Workbooks("report.xls").Activate
'We use the ActiveSheet but you can replace this with
'Sheets("MySheet")if you want
With ActiveSheet
'We select the sheet so we can change the window view
.Select
'If you are in Page Break Preview Or Page Layout view go
'back to normal view, we do this for speed
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
'Turn off Page Breaks, we do this for speed
.DisplayPageBreaks = False
'Set the first and last row to loop through
Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'We loop from Lastrow to Firstrow (bottom to top)
For Lrow = Lastrow To Firstrow Step -1
'We check the values in the A column in this example
With .Cells(Lrow, "E")
If Not IsError(.Value) Then
If .Value = "0" Then .EntireRow.Delete
'This will delete each row with the Value "ron"
'in Column A, case sensitive.
End If
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
Cells(1, 1).Select
Workbooks("report.xls").Close SaveChanges:=True ' NEED TO INCREMENT THE FILE NAME EACH TIME ITS RUN!
Call subCategoryMakerfindway
End Sub
Its the fact that, I cannot seem to save the new generated file with the time stamp as a variable, does anyone know how to do that?
Any help would be greatly appreciated thanks.
Regards,
Jeremy.
The purchasing manager requires (and I mean demands) that we record the prices changes accordingly.
The only problem is, I save the new report as per below:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=reportLoc & Format(Time, "hh-mm_") & Format(Date, "dd-mm-yyyy") & "_Price_REPORT.csv", FileFormat:=xlCSV, CreateBackup:=False 'This saves an autoincremented file report to the destination folder
reportWB = Application.ActiveWorkbook ' THIS REFUSES TO WORK
Saving the new generated file to a variable to pick up later on, as per the below macro.
Sub comparevalues()
Application.DisplayAlerts = False
Dim fileLoc As String
Dim reportLoc As String
Dim lastCSV As String
Dim prevCSV As String
fileLoc = ThisWorkbook.Path & "\" 'Saves location of import macro to variable
reportLoc = ThisWorkbook.Path & "\PriceREPORT\"
Cells(21, 5).Select 'selects E21 (last CSV processed)
lastCSV = ActiveCell.Value 'Saves value as variable
Cells(22, 5).Select
prevCSV = ActiveCell.Value
Application.Workbooks.Open (fileLoc & "\" & lastCSV) 'Opens last generated CSV file!
Application.Workbooks.Open (fileLoc & "\" & prevCSV) 'Opens one before the last generated to compare values!
Workbooks.Add 'Adds a workbook (general adding like file new!)
'filePath = ThisWorkbook.Path & "\" ' location of this file ALREADY DONE PREVIOUSLY?
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=reportLoc & Format(Time, "hh-mm_") & Format(Date, "dd-mm-yyyy") & "_Price_REPORT.csv", FileFormat:=xlCSV, CreateBackup:=False 'This saves an autoincremented file report to the destination folder
reportWB = Application.ActiveWorkbook
Application.Workbooks(lastCSV).Activate
Range("B:C").Select
Selection.Copy
Application.Workbooks("report.xls").Activate
Cells(1, 1).Select
ActiveSheet.Paste
Application.Workbooks(lastCSV).Activate
Range("M:M").Select
Selection.Copy
Application.Workbooks("report.xls").Activate
Cells(1, 3).Select
ActiveSheet.Paste
Application.Workbooks(prevCSV).Activate
Range("M:M").Select
Selection.Copy
Application.Workbooks("report.xls").Activate
Cells(1, 4).Select
ActiveSheet.Paste
'Loop to do calculation
Cells(3, 5).Select
Do
ActiveCell.FormulaR1C1 = "=(RC[-2]-RC[-1])"
ActiveCell.Offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.Offset(0, -1))
Workbooks(lastCSV).Close SaveChanges:=False
Workbooks(prevCSV).Close SaveChanges:=False
Call ifValue
End Sub
Sub ifValue()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = True
End With
Application.Workbooks("report.xls").Activate
'We use the ActiveSheet but you can replace this with
'Sheets("MySheet")if you want
With ActiveSheet
'We select the sheet so we can change the window view
.Select
'If you are in Page Break Preview Or Page Layout view go
'back to normal view, we do this for speed
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
'Turn off Page Breaks, we do this for speed
.DisplayPageBreaks = False
'Set the first and last row to loop through
Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'We loop from Lastrow to Firstrow (bottom to top)
For Lrow = Lastrow To Firstrow Step -1
'We check the values in the A column in this example
With .Cells(Lrow, "E")
If Not IsError(.Value) Then
If .Value = "0" Then .EntireRow.Delete
'This will delete each row with the Value "ron"
'in Column A, case sensitive.
End If
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
Cells(1, 1).Select
Workbooks("report.xls").Close SaveChanges:=True ' NEED TO INCREMENT THE FILE NAME EACH TIME ITS RUN!
Call subCategoryMakerfindway
End Sub
Its the fact that, I cannot seem to save the new generated file with the time stamp as a variable, does anyone know how to do that?
Any help would be greatly appreciated thanks.
Regards,
Jeremy.