forked from christwellman/VBAMacros
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCIAC report.vb
202 lines (157 loc) · 5.6 KB
/
CIAC report.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
Sub CIACProjectReport()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim shLast As Long
Dim CopyRng As Range
Dim StartRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
' Delete unneccssary sheets.
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Worksheets("LOVs").Delete
ActiveWorkbook.Worksheets("Project Tracking - GPAGE").Delete
ActiveWorkbook.Worksheets("Archive Desk Complete").Delete
ActiveWorkbook.Worksheets("Archive Cold Projects").Delete
ActiveWorkbook.Worksheets("Archive Closed Projects").Delete
ActiveWorkbook.Worksheets("New WM Mapping").Delete
On Error GoTo 0
' Add a new summary worksheet.
Set DestSh = ActiveWorkbook.Worksheets.Add
DestSh.Name = "CIAC Projects"
' Fill in the start row.
StartRow = 2
' Loop through all worksheets and copy the data to the
' summary worksheet.
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> DestSh.Name Then
' Find the last row with data on the summary
' and source worksheets.
Last = Lastrow(DestSh)
shLast = Lastrow(sh)
' If source worksheet is not empty and if the last
' row >= StartRow, copy the range.
If shLast > 0 And shLast >= StartRow Then
'Set the range that you want to copy
Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
' Test to see whether there are enough rows in the summary
' worksheet to copy all the data.
If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
MsgBox "There are not enough rows in the " & _
"summary worksheet to place the data."
GoTo ExitTheSub
End If
' This statement copies values and formats.
CopyRng.Copy
With DestSh.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End If
End If
Next
ExitTheSub:
'Add Column Headers Back
Application.Goto DestSh.Cells(1)
ActiveCell.EntireRow.Select
Selection.Insert Shift:=xlDown
Sheets("Project Pipeline").Select
Range("A1:AZ1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("CIAC Projects").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("CIAC Projects").Cells.Select
Selection.clearformats
'Delete Source Worksheets now that we're done with them
ActiveWorkbook.Worksheets("Project Tracking - BBODEN").Delete
ActiveWorkbook.Worksheets("Project Tracking - SMILESNI").Delete
ActiveWorkbook.Worksheets("Project Tracking - EVOGEL").Delete
ActiveWorkbook.Worksheets("Project Tracking - MILASKIN").Delete
ActiveWorkbook.Worksheets("Project Tracking - AMALAN").Delete
ActiveWorkbook.Worksheets("Complete - Presales - Scoping").Delete
ActiveWorkbook.Worksheets("Cold Projects").Delete
ActiveWorkbook.Worksheets("Closed Projects").Delete
Last = Lastrow(DestSh)
Firstrow = ActiveSheet.UsedRange.Cells(2).Row
Lrow = Last + Firstrow - 1
With DestSh
.DisplayPageBreaks = False
For Lrow = Last To Firstrow Step -1
If IsError(.Cells(Lrow, "K").Value) Then
ElseIf .Cells(Lrow, "K").Value <> "CIAC" Then
.Rows(Lrow).EntireRow.Delete
End If
Next
End With
'Cleanup
'Add Column Headers Back
Application.Goto DestSh.Cells(1)
ActiveCell.EntireRow.Select
Selection.Insert Shift:=xlDown
Sheets("Project Pipeline").Select
Range("A1:AZ1").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("CIAC Projects").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("CIAC Projects").Cells.Select
Selection.clearformats
ActiveWorkbook.Worksheets("Project Pipeline").Delete
'Get Rid of Extra Columns
Sheets("CIAC Projects").Select
[A:E].Delete
[E:E].Delete
[I:I].Delete
[O:Q].Delete
[S:U].Delete
[U:XFD].Delete
'Clear Formats
Sheets("CIAC Projects").Cells.Select
Selection.clearformats
DestSh.Rows.AutoFit
DestSh.Columns.AutoFit
Columns("A:A").Select
Selection.NumberFormat = "General"
Columns("D:D").Select
Selection.ColumnWidth = 30
Columns("F:F").Select
Selection.ColumnWidth = 40
DestSh.Rows.AutoFit
With Application
.Calculation = CalcMode
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
''''''''''''''''''''''''''''''''''''''''''''''
'Save New File for Report '
''''''''''''''''''''''''''''''''''''''''''''''
'Create Timestamp
vNow = Now()
vMthStr = CStr(Month(vNow))
vDayStr = CStr(Day(vNow))
'Add leading zeroes to month, day, hour, minutes
If Len(vMthStr) = 1 Then
vMthStr = "0" & vMthStr
End If
If Len(vDayStr) = 1 Then
vDayStr = "0" & vDayStr
End If
'Get date string in yyyymmddhhnn format.
vDateStr = Year(vNow) & vMthStr & vDayStr
SheetPrefix = "CIAC Projects List - "
Sheetname = SheetPrefix & vDateStr & ".xlsx"
'File name
strSheet = Sheetname
'File Path
strPath = "C:\Users\ctwellma\Documents\AS\Reports\CIAC Project Report\"
'File Name
strSheet = strPath & strSheet
'Save As
ActiveWorkbook.saveas Filename:=strSheet, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub