- 帖子
- 87
- 主題
- 24
- 精華
- 0
- 積分
- 122
- 點名
- 0
- 作業系統
- win 7
- 軟體版本
- 2016
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-7-9
- 最後登錄
- 2018-1-16
|
本帖最後由 play9091 於 2011-7-21 09:43 編輯
小弟寫了一個VBA來解決,每天要做三小時報告的囧境……花了二天的時間把它弄完了,但是它非常的巨大,而小弟功力尚淺,找不到優化的手斷,想請益一下版上的先進們幫助一下!!!- Sub name_test()
- Application.ScreenUpdating = False
- Application.DisplayAlerts = False
- T = Time
- For I = 4 To 10
- '叫出KPI報告
- KPI = InputBox("C#KPI報告路俓(順序從C4~C9,最後才是C1)")
- Workbooks.Open (KPI)
- Set KPI = Nothing
- KPI = ActiveWorkbook.Name
- '叫出每日C#報告
- Clu = InputBox("C#報告路俓(順序從C4~C9,最後才是C1)")
- Workbooks.Open (Clu)
- Set Clu = Nothing
- Clu = ActiveWorkbook.Name
- '複制每日C#報告的sheet到KPI報告
- If I <> 10 Then
- Workbooks(Clu).Sheets("sheet1").Copy After:=Workbooks(KPI).Sheets("M2000 BSC KPI Report (2)")
- Sheets("sheet1").Name = "C" & I
- ElseIf I = 10 Then
- Workbooks(Clu).Sheets("sheet1").Copy After:=Workbooks(KPI).Sheets("sheet5")
- Sheets("Sheet1 (2)").Name = "C" & I
- End If
- Workbooks(Clu).Close SaveChanges:=False
- Set Clu = Nothing
- '叫出paging報告
- Pag = InputBox("paging報告路俓")
- Workbooks.Open (Pag)
- Set Pag = Nothing
- Pag = ActiveWorkbook.Name
- '複制paging報告的sheet到KPI報告
- If I <> 10 Then
- Workbooks(Pag).Sheets("sheet1").Copy After:=Workbooks(KPI).Sheets("M2000 BSC KPI Report (2)")
- Sheets("sheet1").Name = "paging"
- ElseIf I = 10 Then
- Workbooks(Pag).Sheets("sheet1").Copy After:=Workbooks(KPI).Sheets("sheet2")
- Sheets("Sheet1 (2)").Name = "paging"
- End If
- Workbooks(Pag).Close SaveChanges:=False
- Set Pag = Nothing
- '開始出報告
- Sheets("paging").Select
- Range("A11").Select
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- Selection.Copy
- If I <> 10 Then
- Sheets("M2000 MSC Paging").Select
- ElseIf I = 10 Then
- Sheets("sheet5").Select
- End If
- Range("A2").Select
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- ActiveSheet.Paste
- '清除剪貼薄
- ' My.Computer.Clipboard.Clear() = True
- Sheets("C" & I).Select
- Range("A11").Select
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- Application.CutCopyMode = False
- Selection.Copy
- If I <> 10 Then
- Sheets("M2000 BSC KPI Report").Select
- Range("A3").Select
- ElseIf I = 10 Then
- Sheets("sheet2").Select
- Range("A2").Select
- End If
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- ActiveSheet.Paste
- If I <> 10 Then
- '清除剪貼薄
- ' My.Computer.Clipboard.Clear() = True
- Sheets("C" & I).Select
- Application.CutCopyMode = False
- Sheets("C" & I).Range("E3").Value = "=IF(ISLOGICAL(E4)," & "" & ",A10)"
- Sheets("C" & I).Range("F3").Value = "=IF(ISLOGICAL(F4)," & "" & ",A10)"
- Sheets("C" & I).Range("E4").Value = "=Text(Right(A11, 8), ""hh:mm:ss"") >= ""02:00:00"""
- Sheets("C" & I).Range("F4").Value = "=Text(Right(A11, 8), ""hh:mm:ss"") <= ""21:30:00"""
- Range("A11").Select
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- Range("A10:EQ5482").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
- Range("E3:F4"), Unique:=False
- Selection.Copy
- Sheets("M2000 BSC KPI Report (2)").Select
- Range("A3").Select
- Range(Selection, Selection.End(xlToRight)).Select
- Range(Selection, Selection.End(xlDown)).Select
- ActiveSheet.Paste
- End If
- Sheets("C" & I).Delete
- Sheets("paging").Delete
- D = InputBox("輸入今天的日期(EX:16)")
- If I <> 10 Then
- Sheets("sheet2").Select
- ElseIf I = 10 Then
- Sheets("BSC23-43 BTS Track").Select
- End If
- Cells.Replace What:=D - 1, Replacement:=D, LookAt:=xlPart, SearchOrder _
- :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
- Workbooks(KPI).Close SaveChanges:=True
- Set KPI = Nothing
- Next I
- MsgBox ("共用時: " & Format(Time - T, "HH:MM:SS"))
- End Sub
複製代碼 |
|