Помогите с маросом
Добавлено: 14 дек 2009, 10:43
Нужно подкорекрировать макрос, чтобы данные брались не из data, а из pivot, и чтобы после сохранения, открывая сохраненный файл, не было бы кнопки. Вот код
Dim source As Range, dest As Range, temp As Range
Sheets("result").Range("A2:K65536").ClearContents
Sheets("data").Select
Rows("1:2").Delete Shift:=xlUp
Range("B1:C1").UnMerge
Range("C1").FormulaR1C1 = "Ship-to name"
Range("I:J").UnMerge
If Range("J1").Value <> "Metrics" Then
Columns("J:J").Select
Selection.Insert Shift:=xlToRight
End If
Range("J1").FormulaR1C1 = ">100"
Range("J2").FormulaR1C1 = "=IF(RC[5]>=100,1,0)"
Range("J2").Copy
Range("J2", Range("K2").End(xlDown).Offset(0, -1)).Select
ActiveSheet.Paste
Range("A1").Select
Range("P1").Value = "temp"
Sheets("pivot").Select
Range("B5").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"data!C1:C15"
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Sheets("result").Select
Set source = Sheets("pivot").Range("A5")
Set dest = Sheets("result").Range("A2")
While source.Value <> ""
dest.Value = source.Value
Set temp = Sheets("data").Range("B:B").Find(dest.Value)
dest.Offset(0, 1).Value = temp.Offset(0, 3).Value
dest.Offset(0, 2).Value = temp.Offset(0, 1).Value
dest.Offset(0, 3).Value = temp.Offset(0, 2).Value
dest.Offset(0, 4).Value = temp.Offset(0, 4).Value
dest.Offset(0, 5).Value = temp.Offset(0, 6).Value
dest.Offset(0, 6).Value = temp.Offset(0, 7).Value
Set temp = Sheets("pivot").Range("A:A").Find(dest.Value)
dest.Offset(0, 7).Value = Round(temp.Offset(0, 1).Value, 2)
dest.Offset(0, 8).Value = temp.Offset(0, 2).Value
dest.Offset(0, 9).Value = temp.Offset(0, 3).Value
If (dest.Offset(0, 9).Value >= 2) Then
dest.Offset(0, 10).Value = "äà"
Else
dest.Offset(0, 10).Value = "íåò"
End If
Set source = source.Offset(1, 0)
Set dest = dest.Offset(1, 0)
Wend
Sheets("Sales_Repres").Select
Range("B5").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:="data!C1:C15"
Range("B5").Select
ActiveSheet.PivotTables("Сводная таблица2").PivotCache.Refresh
Sheets("result").Select
MsgBox ("Готово!")
End Sub
Dim source As Range, dest As Range, temp As Range
Sheets("result").Range("A2:K65536").ClearContents
Sheets("data").Select
Rows("1:2").Delete Shift:=xlUp
Range("B1:C1").UnMerge
Range("C1").FormulaR1C1 = "Ship-to name"
Range("I:J").UnMerge
If Range("J1").Value <> "Metrics" Then
Columns("J:J").Select
Selection.Insert Shift:=xlToRight
End If
Range("J1").FormulaR1C1 = ">100"
Range("J2").FormulaR1C1 = "=IF(RC[5]>=100,1,0)"
Range("J2").Copy
Range("J2", Range("K2").End(xlDown).Offset(0, -1)).Select
ActiveSheet.Paste
Range("A1").Select
Range("P1").Value = "temp"
Sheets("pivot").Select
Range("B5").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"data!C1:C15"
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Sheets("result").Select
Set source = Sheets("pivot").Range("A5")
Set dest = Sheets("result").Range("A2")
While source.Value <> ""
dest.Value = source.Value
Set temp = Sheets("data").Range("B:B").Find(dest.Value)
dest.Offset(0, 1).Value = temp.Offset(0, 3).Value
dest.Offset(0, 2).Value = temp.Offset(0, 1).Value
dest.Offset(0, 3).Value = temp.Offset(0, 2).Value
dest.Offset(0, 4).Value = temp.Offset(0, 4).Value
dest.Offset(0, 5).Value = temp.Offset(0, 6).Value
dest.Offset(0, 6).Value = temp.Offset(0, 7).Value
Set temp = Sheets("pivot").Range("A:A").Find(dest.Value)
dest.Offset(0, 7).Value = Round(temp.Offset(0, 1).Value, 2)
dest.Offset(0, 8).Value = temp.Offset(0, 2).Value
dest.Offset(0, 9).Value = temp.Offset(0, 3).Value
If (dest.Offset(0, 9).Value >= 2) Then
dest.Offset(0, 10).Value = "äà"
Else
dest.Offset(0, 10).Value = "íåò"
End If
Set source = source.Offset(1, 0)
Set dest = dest.Offset(1, 0)
Wend
Sheets("Sales_Repres").Select
Range("B5").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:="data!C1:C15"
Range("B5").Select
ActiveSheet.PivotTables("Сводная таблица2").PivotCache.Refresh
Sheets("result").Select
MsgBox ("Готово!")
End Sub