Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Current page method of pivot field failed


_PROBLEM:_ [/b]
RUN TIME ERROR 2147417848 (80010108)
“CURRENT PAGE METHOD OF PIVOT FIELD FAILED”

MY MACRO RAN ONCE PERFECTLY, BUT EACH SUBSEQUENT TIME EXCEL FREEZES UP
AND I HAVE TO SHUT EXCEL DOWN.

*_OPERATING_SYSTEM:_* WINDOWS 2000 PRO, EXCEL 2003

*_EXPERIENCE:_* I DON’T HAVE MUCH EXCEL VBA EXPERIENCE – NO FORMAL
EDUCATION.

*_BACKGROUND:_

I designed a pivot table based on a dynamic range (size is usually 5000
rows by 70 columns). My macro creates report sheets based on this pivot
table by automatically switching the “page” field, and then copying and
pasting the relevant data into new worksheets that are created when the
macro is run.

The worksheets are named the same as the page field of the pivot table.
Just as an example (not the same fields as my P.T), if page fields are
large American cities, and the user wants reports for “Houston” and
“Jacksonville”, they select these names from a validated list in the
pivot table worksheet (this list is not a part of the pivot table),
then start the macro. The macro automatically creates new worksheets
that are named “Houston” and “Jacksonville” which contain the report
for the city.

_STEPS_TAKEN:_*

1) I’VE READ THE FULL VERSION OF MIKE’S XTREMEVB THREAD ON
“AUTOMATING EXCEL FROM VB 6.0” WHICH INCLUDES MSKB 178510 & MSKB 319832
ARITCLES. (HTTP://WWW.XTREMEVBTALK.COM/ARCHIVE/INDEX.PHP/T-135815)

2) I’VE FOLLOWED ALL THE STEPS OUTLINED IN THE ARTICLE, INCLUDING
DEFINING AN OBJECT FOR THE CURRENT INSTANCE OF EXCEL, PRECEEDING EVERY
FUNCTION WITH THIS OBJECT, WHILE USING THE “AUTOMATION PROPHYLACTICS”
TO COMPILE ALL OF MY CODE TO ENSURE THERE ARE NO CALLS TO A GLOBAL
OBJECT.

3) CLOSED THIS OBJECT AT THE END OF MY CODE.

*_WHERE_I_AM_NOW:_* EXCEL STILL FREEZES EVERYTIME I RUN MY CODE. I
CANNOT SELECT ANY CELLS OR DO ANYTHING ELSE.

-THANK YOU VERY MUCH TO ANYONE WHO CAN HELP ME. IF THIS POST IS IN ANY
WAY IMPROPER OR IN THE WRONG PLACE, PLEASE FEEL FREE TO CORRECT ME. -

*_CODE:_*

OPTION EXPLICIT

PUBLIC INTSTARTDAY AS INTEGER
PUBLIC INTENDDAY AS INTEGER
PUBLIC INTSTARTMONTH AS INTEGER
PUBLIC INTENDMONTH AS INTEGER
PUBLIC STRSTARTMONTH AS STRING
PUBLIC STRENDMONTH AS STRING
PUBLIC CURRENTYEAR AS INTEGER
PUBLIC HISTORICAL AS STRING
PUBLIC OEXCEL AS EXCEL.APPLICATION
PUBLIC OWB AS EXCEL.WORKBOOK
PUBLIC OWS AS EXCEL.WORKSHEET
PUBLIC OWSLOOP AS EXCEL.WORKSHEET

PUBLIC SUB GRADESHEETS()

*ON ERROR RESUME NEXT
SET OEXCEL = GETOBJECT(, \"EXCEL.APPLICATION\")
SET OWB = OEXCEL.WORKBOOKS(\"PM#4 - GRADES - TPD\")
SET OWS = OWB.WORKSHEETS(\"GRADE SHEET CALCULATOR\")
oExcel.ScreenUpdating = False
oExcel.Calculation = xlCalculationManual


oWB.Colors(48) = RGB(202, 6, 6)
oWS.Rows("2:1000").Select
oExcel.Selection.EntireRow.Hidden = False

'************** Declare Variables **********************
Dim NumColumns As Integer
Dim StartDate
Dim EndDate
Dim StDate As String
Dim EndDte As String
Dim ActStDate
Dim ActEndDate
Dim x, y As Integer
Dim GradeSheet As String

'*************** Initialize Variables *****************

NumColumns = 2
IntStartDay = Day(oWS.Cells(1, 7).Value)
IntEndDay = Day(oWS.Cells(2, 7).Value)
IntStartMonth = Month(oWS.Cells(1, 7).Value)
IntEndMonth = Month(oWS.Cells(2, 7).Value)
CurrentYear = Year(oWS.Cells(1, 7).Value)
If CurrentYear < 2003 Then
IntStartMonth = Month(oWB.Sheets("Raw Data").Cells(2, 3).Value)
IntEndMonth = Month(oWB.Sheets("Raw Data").Cells(3, 3).Value)
CurrentYear = Year(Now)
End If
StartDate = oWS.Cells(1, 7).Value
EndDate = oWS.Cells(2, 7).Value
ActStDate = oWS.Cells(1, 4).Value
ActEndDate = oWS.Cells(2, 4).Value

StDate = "<" & ActStDate
EndDte = "" & ActEndDate

'***** Hide Dates That are Outside Of User Selected Date Range
********
oWS.Range("B3").Select
If oWS.Cells(2, 4).Value = "" Then
oExcel.Selection.Group Start:=True, End:=True, By:=1,
Periods:=Array(False, _
False, False, True, False, False, False)
Else
oExcel.Selection.Group Start:=StartDate, End:=EndDate, By:=1,
Periods:=Array(False, _
False, False, True, False, False, False)
With oWS.PivotTables("Summary").PivotFields("TIMESTAMP" )
..PivotItems(StDate).Visible = False
..PivotItems(EndDte).Visible = False
End With
End If

'Application.Run "'PM#4 - Grades - TPD.xls'!CreateSheets"
'
'End Sub
'
'Public Sub CreateSheets()


'********** DECLARE VARIABLES *******
Static a, b, c, aLoop As Integer
Dim TopDataCellRow, LeftmostDataCellCol, NumberofDataColumns As
Integer
Dim PM4FirstTagRow, PM4TagColumn, NumberofWorksheets As Integer
Dim UnitsPath As String
Dim Grade As String
Dim GradeNumber As Variant
Dim TopLeftDataCell As String
Dim Average As Range
Dim ExitLoop As Boolean
Dim strAverageAddress As String
Dim intAverageAddress As Integer
Dim KeepGoin As Boolean
Dim LoopCounter As Integer
Dim NumberofMissingColumns As Integer

'************* Create Grade Sheets ***************

LoopCounter = 1002
KeepGoin = False

Do

If oWS.Cells(LoopCounter, 1) = "" Then
Exit Do
Else
KeepGoin = True
End If

oExcel.ScreenUpdating = False ' Disables screen changes

'********** INITIALIZE VARIABLES ******
If oWS.Cells(LoopCounter, 1) = "All" Then
Grade = "(All)"
Else
Grade = Trim(Str(oWS.Cells(LoopCounter, 1))) ' Grade of
paper
End If

TopDataCellRow = 6 ' Row of data immediately after
headings
LeftmostDataCellCol = 3 ' Column of data immediately after
units column (A=1,B=2,C=3,etc)
NumberofDataColumns = 7 ' # of Data Columns Not Including
"Avg." column
PM4FirstTagRow = 9 ' Row number of first tag in "Tags"
worksheet (PM # 4)
PM4TagColumn = 2 ' Column number of first tag in "Tags"
worksheet (PM # 4) - (A=1,B=2,C=3,etc)
UnitsPath = "='[Data Extractor.xls]Tags'!R" ' Excel link to "Tags"
worksheet

'*********** CREATE GRADESHEET **
If StrStartMonth = StrEndMonth Then
If IntEndDay - IntStartDay 25 Then
GradeSheet = Grade & " (" & StrStartMonth & ", " &
CurrentYear & ")"
ElseIf IntEndDay - IntStartDay = 7 Then
GradeSheet = Grade & " (" & StrStartMonth & " " &
IntStartDay & " - " & StrEndMonth & " " & IntEndDay & ", " &
CurrentYear & ")"
Else
End If
ElseIf IntStartMonth < IntEndMonth Then
GradeSheet = Grade & " (" & StrStartMonth & " - " & StrEndMonth
& ", " & CurrentYear & ")"
Else

End If

NumberofWorksheets = oWB.Worksheets.Count
oWB.Worksheets.Add After:=oWB.Worksheets(NumberofWorksheets)
oWB.ActiveSheet.Name = GradeSheet
Set oWSLoop = oWB.Worksheets(GradeSheet)

'*********** LINK DESCRIPTIONS *********
GetData oExcel.ThisWorkbook.Path & "\Data Extractor.xls", "Tags",
"A8:A150", oWSLoop.Range("A6"), True



' Windows("Data Extractor.xls").Activate
' oExcel.Run "'Data Extractor.xls'!WBActivateHandler"
' Sheets("Tags").Select
' Range("A8:A150").Select
' Selection.Copy
' Windows("PM#4 - Grades - TPD.xls").Activate
' oWSLoop.Range("A6").Select
' oWSLoop.Paste Link:=True

oWB.ActiveSheet.Range("A4").FormulaR1C1 = "Production at Reel
(tonnes/day)"
oWSLoop.Range("A4").Select
oExcel.Selection.Font.Bold = True
oExcel.Selection.Font.Italic = True

oWSLoop.Columns("A:A").ColumnWidth = 33.78
oWSLoop.Range("A6").Select
oExcel.Selection.FormatConditions.Delete
oExcel.Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
oExcel.Selection.FormatConditions(1).Font.ColorInd ex = 2

oExcel.Selection.Copy
oWSLoop.Range("A7:B150").Select
oExcel.Selection.PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

oWSLoop.Range("A6").Select
oExcel.Selection.Font.Bold = True
oExcel.Selection.Font.Underline = xlUnderlineStyleSingle

oWSLoop.Columns("B:B").Select
With oExcel.Selection.Font
..Name = "Arial"
..Size = 8
..Strikethrough = False
..Superscript = False
..Subscript = False
..OutlineFont = False
..Shadow = False
..Underline = xlUnderlineStyleNone
..ColorIndex = xlAutomatic
End With

'*********** COPY AND PASTE DATA INTO GRADESHEETS ********
oWS.Select
' To avoid run-time errors set the following property to True.

'ActiveSheet.PivotTables("Summary").CubeFields("GR ADE").EnableMultiplePageItems
= True

oWB.ActiveSheet.PivotTables("Summary").PivotFields ("GRADE").CurrentPage
= Grade

aLoop = oExcel.WorksheetFunction.CountIf(oWS.Columns(1),
"Average")

If aLoop = 0 Then
oExcel.DisplayAlerts = False
oWB.Worksheets(NumberofWorksheets + 1).Delete
oExcel.DisplayAlerts = True
GoTo LastLine
End If

b = LeftmostDataCellCol
Set Average = oWS.Range("A4")

For a = 1 To aLoop
oWS.Select

' Find "Average" in Column "A"
Set Average = oWS.Columns(1).Find(What:="Average",
After:=Average, LookIn:=xlValues, Lookat:=xlWhole,
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)


'************* SKIP TO END

oWS.Select
oExcel.ScreenUpdating = True

LastLine:
LoopCounter = LoopCounter + 1
'
Loop While KeepGoin = True

oExcel.Calculation = xlCalculationAutomatic
oExcel.ScreenUpdating = True

'Clean up
[b]Set oWS = Nothing
Set oWSLoop = Nothing
'If Not oWB Is Nothing Then oWB.Close
Set oWB = Nothing
'oExcel.Quit
Set oExcel = Nothing*End Sub


--
stock11r
------------------------------------------------------------------------
stock11r's Profile: http://www.excelforum.com/member.php...o&userid=26251
View this thread: http://www.excelforum.com/showthread...hreadid=395464

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 14
Default Current page method of pivot field failed

Did you find a solution to this problem? I have this same error code while
programming VB Excel macros doing lots of cutting and pasting (importing raw
datafiles into a common summary file & graphing the data). I note that
solomon_monkey has this same error code in a post labled HEEEEEEELP on 7/5/05.


"stock11r" wrote:


_PROBLEM:_ [/b]
RUN TIME ERROR 2147417848 (80010108)
€śCURRENT PAGE METHOD OF PIVOT FIELD FAILED€ť

MY MACRO RAN ONCE PERFECTLY, BUT EACH SUBSEQUENT TIME EXCEL FREEZES UP
AND I HAVE TO SHUT EXCEL DOWN.

*_OPERATING_SYSTEM:_* WINDOWS 2000 PRO, EXCEL 2003

*_EXPERIENCE:_* I DONT HAVE MUCH EXCEL VBA EXPERIENCE €“ NO FORMAL
EDUCATION.

*_BACKGROUND:_

I designed a pivot table based on a dynamic range (size is usually 5000
rows by 70 columns). My macro creates report sheets based on this pivot
table by automatically switching the €śpage€ť field, and then copying and
pasting the relevant data into new worksheets that are created when the
macro is run.

The worksheets are named the same as the page field of the pivot table.
Just as an example (not the same fields as my P.T), if page fields are
large American cities, and the user wants reports for €śHouston€ť and
€śJacksonville€ť, they select these names from a validated list in the
pivot table worksheet (this list is not a part of the pivot table),
then start the macro. The macro automatically creates new worksheets
that are named €śHouston€ť and €śJacksonville€ť which contain the report
for the city.

_STEPS_TAKEN:_*

1) IVE READ THE FULL VERSION OF MIKES XTREMEVB THREAD ON
€śAUTOMATING EXCEL FROM VB 6.0€ť WHICH INCLUDES MSKB 178510 & MSKB 319832
ARITCLES. (HTTP://WWW.XTREMEVBTALK.COM/ARCHIVE/INDEX.PHP/T-135815)

2) IVE FOLLOWED ALL THE STEPS OUTLINED IN THE ARTICLE, INCLUDING
DEFINING AN OBJECT FOR THE CURRENT INSTANCE OF EXCEL, PRECEEDING EVERY
FUNCTION WITH THIS OBJECT, WHILE USING THE €śAUTOMATION PROPHYLACTICS€ť
TO COMPILE ALL OF MY CODE TO ENSURE THERE ARE NO CALLS TO A GLOBAL
OBJECT.

3) CLOSED THIS OBJECT AT THE END OF MY CODE.

*_WHERE_I_AM_NOW:_* EXCEL STILL FREEZES EVERYTIME I RUN MY CODE. I
CANNOT SELECT ANY CELLS OR DO ANYTHING ELSE.

-THANK YOU VERY MUCH TO ANYONE WHO CAN HELP ME. IF THIS POST IS IN ANY
WAY IMPROPER OR IN THE WRONG PLACE, PLEASE FEEL FREE TO CORRECT ME. -

*_CODE:_*

OPTION EXPLICIT

PUBLIC INTSTARTDAY AS INTEGER
PUBLIC INTENDDAY AS INTEGER
PUBLIC INTSTARTMONTH AS INTEGER
PUBLIC INTENDMONTH AS INTEGER
PUBLIC STRSTARTMONTH AS STRING
PUBLIC STRENDMONTH AS STRING
PUBLIC CURRENTYEAR AS INTEGER
PUBLIC HISTORICAL AS STRING
PUBLIC OEXCEL AS EXCEL.APPLICATION
PUBLIC OWB AS EXCEL.WORKBOOK
PUBLIC OWS AS EXCEL.WORKSHEET
PUBLIC OWSLOOP AS EXCEL.WORKSHEET

PUBLIC SUB GRADESHEETS()

*ON ERROR RESUME NEXT
SET OEXCEL = GETOBJECT(, \"EXCEL.APPLICATION\")
SET OWB = OEXCEL.WORKBOOKS(\"PM#4 - GRADES - TPD\")
SET OWS = OWB.WORKSHEETS(\"GRADE SHEET CALCULATOR\")
oExcel.ScreenUpdating = False
oExcel.Calculation = xlCalculationManual


oWB.Colors(48) = RGB(202, 6, 6)
oWS.Rows("2:1000").Select
oExcel.Selection.EntireRow.Hidden = False

'************** Declare Variables **********************
Dim NumColumns As Integer
Dim StartDate
Dim EndDate
Dim StDate As String
Dim EndDte As String
Dim ActStDate
Dim ActEndDate
Dim x, y As Integer
Dim GradeSheet As String

'*************** Initialize Variables *****************

NumColumns = 2
IntStartDay = Day(oWS.Cells(1, 7).Value)
IntEndDay = Day(oWS.Cells(2, 7).Value)
IntStartMonth = Month(oWS.Cells(1, 7).Value)
IntEndMonth = Month(oWS.Cells(2, 7).Value)
CurrentYear = Year(oWS.Cells(1, 7).Value)
If CurrentYear < 2003 Then
IntStartMonth = Month(oWB.Sheets("Raw Data").Cells(2, 3).Value)
IntEndMonth = Month(oWB.Sheets("Raw Data").Cells(3, 3).Value)
CurrentYear = Year(Now)
End If
StartDate = oWS.Cells(1, 7).Value
EndDate = oWS.Cells(2, 7).Value
ActStDate = oWS.Cells(1, 4).Value
ActEndDate = oWS.Cells(2, 4).Value

StDate = "<" & ActStDate
EndDte = "" & ActEndDate

'***** Hide Dates That are Outside Of User Selected Date Range
********
oWS.Range("B3").Select
If oWS.Cells(2, 4).Value = "" Then
oExcel.Selection.Group Start:=True, End:=True, By:=1,
Periods:=Array(False, _
False, False, True, False, False, False)
Else
oExcel.Selection.Group Start:=StartDate, End:=EndDate, By:=1,
Periods:=Array(False, _
False, False, True, False, False, False)
With oWS.PivotTables("Summary").PivotFields("TIMESTAMP" )
.PivotItems(StDate).Visible = False
.PivotItems(EndDte).Visible = False
End With
End If

'Application.Run "'PM#4 - Grades - TPD.xls'!CreateSheets"
'
'End Sub
'
'Public Sub CreateSheets()


'********** DECLARE VARIABLES *******
Static a, b, c, aLoop As Integer
Dim TopDataCellRow, LeftmostDataCellCol, NumberofDataColumns As
Integer
Dim PM4FirstTagRow, PM4TagColumn, NumberofWorksheets As Integer
Dim UnitsPath As String
Dim Grade As String
Dim GradeNumber As Variant
Dim TopLeftDataCell As String
Dim Average As Range
Dim ExitLoop As Boolean
Dim strAverageAddress As String
Dim intAverageAddress As Integer
Dim KeepGoin As Boolean
Dim LoopCounter As Integer
Dim NumberofMissingColumns As Integer

'************* Create Grade Sheets ***************

LoopCounter = 1002
KeepGoin = False

Do

If oWS.Cells(LoopCounter, 1) = "" Then
Exit Do
Else
KeepGoin = True
End If

oExcel.ScreenUpdating = False ' Disables screen changes

'********** INITIALIZE VARIABLES ******
If oWS.Cells(LoopCounter, 1) = "All" Then
Grade = "(All)"
Else
Grade = Trim(Str(oWS.Cells(LoopCounter, 1))) ' Grade of
paper
End If

TopDataCellRow = 6 ' Row of data immediately after
headings
LeftmostDataCellCol = 3 ' Column of data immediately after
units column (A=1,B=2,C=3,etc)
NumberofDataColumns = 7 ' # of Data Columns Not Including
"Avg." column
PM4FirstTagRow = 9 ' Row number of first tag in "Tags"
worksheet (PM # 4)
PM4TagColumn = 2 ' Column number of first tag in "Tags"
worksheet (PM # 4) - (A=1,B=2,C=3,etc)
UnitsPath = "='[Data Extractor.xls]Tags'!R" ' Excel link to "Tags"
worksheet

'*********** CREATE GRADESHEET **
If StrStartMonth = StrEndMonth Then
If IntEndDay - IntStartDay 25 Then
GradeSheet = Grade & " (" & StrStartMonth & ", " &
CurrentYear & ")"
ElseIf IntEndDay - IntStartDay = 7 Then
GradeSheet = Grade & " (" & StrStartMonth & " " &
IntStartDay & " - " & StrEndMonth & " " & IntEndDay & ", " &
CurrentYear & ")"
Else
End If
ElseIf IntStartMonth < IntEndMonth Then
GradeSheet = Grade & " (" & StrStartMonth & " - " & StrEndMonth
& ", " & CurrentYear & ")"
Else

End If

NumberofWorksheets = oWB.Worksheets.Count
oWB.Worksheets.Add After:=oWB.Worksheets(NumberofWorksheets)
oWB.ActiveSheet.Name = GradeSheet
Set oWSLoop = oWB.Worksheets(GradeSheet)

'*********** LINK DESCRIPTIONS *********
GetData oExcel.ThisWorkbook.Path & "\Data Extractor.xls", "Tags",
"A8:A150", oWSLoop.Range("A6"), True



' Windows("Data Extractor.xls").Activate
' oExcel.Run "'Data Extractor.xls'!WBActivateHandler"
' Sheets("Tags").Select
' Range("A8:A150").Select
' Selection.Copy
' Windows("PM#4 - Grades - TPD.xls").Activate
' oWSLoop.Range("A6").Select
' oWSLoop.Paste Link:=True

oWB.ActiveSheet.Range("A4").FormulaR1C1 = "Production at Reel
(tonnes/day)"
oWSLoop.Range("A4").Select
oExcel.Selection.Font.Bold = True
oExcel.Selection.Font.Italic = True

oWSLoop.Columns("A:A").ColumnWidth = 33.78
oWSLoop.Range("A6").Select
oExcel.Selection.FormatConditions.Delete
oExcel.Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
oExcel.Selection.FormatConditions(1).Font.ColorInd ex = 2

oExcel.Selection.Copy
oWSLoop.Range("A7:B150").Select
oExcel.Selection.PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

oWSLoop.Range("A6").Select
oExcel.Selection.Font.Bold = True
oExcel.Selection.Font.Underline = xlUnderlineStyleSingle

oWSLoop.Columns("B:B").Select
With oExcel.Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

'*********** COPY AND PASTE DATA INTO GRADESHEETS ********
oWS.Select
' To avoid run-time errors set the following property to True.

'ActiveSheet.PivotTables("Summary").CubeFields("GR ADE").EnableMultiplePageItems
= True

oWB.ActiveSheet.PivotTables("Summary").PivotFields ("GRADE").CurrentPage
= Grade

aLoop = oExcel.WorksheetFunction.CountIf(oWS.Columns(1),
"Average")

If aLoop = 0 Then
oExcel.DisplayAlerts = False
oWB.Worksheets(NumberofWorksheets + 1).Delete
oExcel.DisplayAlerts = True
GoTo LastLine
End If

b = LeftmostDataCellCol
Set Average = oWS.Range("A4")

For a = 1 To aLoop
oWS.Select

' Find "Average" in Column "A"
Set Average = oWS.Columns(1).Find(What:="Average",
After:=Average, LookIn:=xlValues, Lookat:=xlWhole,
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)


'************* SKIP TO END

oWS.Select
oExcel.ScreenUpdating = True

LastLine:
LoopCounter = LoopCounter + 1
'
Loop While KeepGoin = True

oExcel.Calculation = xlCalculationAutomatic
oExcel.ScreenUpdating = True

'Clean up
[b]Set oWS = Nothing
Set oWSLoop = Nothing
'If Not oWB Is Nothing Then oWB.Close
Set oWB = Nothing
'oExcel.Quit
Set oExcel = Nothing*End Sub


--
stock11r
------------------------------------------------------------------------
stock11r's Profile: http://www.excelforum.com/member.php...o&userid=26251
View this thread: http://www.excelforum.com/showthread...hreadid=395464


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 14
Default Current page method of pivot field failed

If you still have problems with this code, I think the answer *might* be
addressed in the thread titled, "Where else to get help?". See one of the
last posts by me for a summary of the problems/solution that I had.
-Reuel


"stock11r" wrote:


_PROBLEM:_ [/b]
RUN TIME ERROR 2147417848 (80010108)
€śCURRENT PAGE METHOD OF PIVOT FIELD FAILED€ť

MY MACRO RAN ONCE PERFECTLY, BUT EACH SUBSEQUENT TIME EXCEL FREEZES UP
AND I HAVE TO SHUT EXCEL DOWN.

*_OPERATING_SYSTEM:_* WINDOWS 2000 PRO, EXCEL 2003

*_EXPERIENCE:_* I DONT HAVE MUCH EXCEL VBA EXPERIENCE €“ NO FORMAL
EDUCATION.

*_BACKGROUND:_

I designed a pivot table based on a dynamic range (size is usually 5000
rows by 70 columns). My macro creates report sheets based on this pivot
table by automatically switching the €śpage€ť field, and then copying and
pasting the relevant data into new worksheets that are created when the
macro is run.

The worksheets are named the same as the page field of the pivot table.
Just as an example (not the same fields as my P.T), if page fields are
large American cities, and the user wants reports for €śHouston€ť and
€śJacksonville€ť, they select these names from a validated list in the
pivot table worksheet (this list is not a part of the pivot table),
then start the macro. The macro automatically creates new worksheets
that are named €śHouston€ť and €śJacksonville€ť which contain the report
for the city.

_STEPS_TAKEN:_*

1) IVE READ THE FULL VERSION OF MIKES XTREMEVB THREAD ON
€śAUTOMATING EXCEL FROM VB 6.0€ť WHICH INCLUDES MSKB 178510 & MSKB 319832
ARITCLES. (HTTP://WWW.XTREMEVBTALK.COM/ARCHIVE/INDEX.PHP/T-135815)

2) IVE FOLLOWED ALL THE STEPS OUTLINED IN THE ARTICLE, INCLUDING
DEFINING AN OBJECT FOR THE CURRENT INSTANCE OF EXCEL, PRECEEDING EVERY
FUNCTION WITH THIS OBJECT, WHILE USING THE €śAUTOMATION PROPHYLACTICS€ť
TO COMPILE ALL OF MY CODE TO ENSURE THERE ARE NO CALLS TO A GLOBAL
OBJECT.

3) CLOSED THIS OBJECT AT THE END OF MY CODE.

*_WHERE_I_AM_NOW:_* EXCEL STILL FREEZES EVERYTIME I RUN MY CODE. I
CANNOT SELECT ANY CELLS OR DO ANYTHING ELSE.

-THANK YOU VERY MUCH TO ANYONE WHO CAN HELP ME. IF THIS POST IS IN ANY
WAY IMPROPER OR IN THE WRONG PLACE, PLEASE FEEL FREE TO CORRECT ME. -

*_CODE:_*

OPTION EXPLICIT

PUBLIC INTSTARTDAY AS INTEGER
PUBLIC INTENDDAY AS INTEGER
PUBLIC INTSTARTMONTH AS INTEGER
PUBLIC INTENDMONTH AS INTEGER
PUBLIC STRSTARTMONTH AS STRING
PUBLIC STRENDMONTH AS STRING
PUBLIC CURRENTYEAR AS INTEGER
PUBLIC HISTORICAL AS STRING
PUBLIC OEXCEL AS EXCEL.APPLICATION
PUBLIC OWB AS EXCEL.WORKBOOK
PUBLIC OWS AS EXCEL.WORKSHEET
PUBLIC OWSLOOP AS EXCEL.WORKSHEET

PUBLIC SUB GRADESHEETS()

*ON ERROR RESUME NEXT
SET OEXCEL = GETOBJECT(, \"EXCEL.APPLICATION\")
SET OWB = OEXCEL.WORKBOOKS(\"PM#4 - GRADES - TPD\")
SET OWS = OWB.WORKSHEETS(\"GRADE SHEET CALCULATOR\")
oExcel.ScreenUpdating = False
oExcel.Calculation = xlCalculationManual


oWB.Colors(48) = RGB(202, 6, 6)
oWS.Rows("2:1000").Select
oExcel.Selection.EntireRow.Hidden = False

'************** Declare Variables **********************
Dim NumColumns As Integer
Dim StartDate
Dim EndDate
Dim StDate As String
Dim EndDte As String
Dim ActStDate
Dim ActEndDate
Dim x, y As Integer
Dim GradeSheet As String

'*************** Initialize Variables *****************

NumColumns = 2
IntStartDay = Day(oWS.Cells(1, 7).Value)
IntEndDay = Day(oWS.Cells(2, 7).Value)
IntStartMonth = Month(oWS.Cells(1, 7).Value)
IntEndMonth = Month(oWS.Cells(2, 7).Value)
CurrentYear = Year(oWS.Cells(1, 7).Value)
If CurrentYear < 2003 Then
IntStartMonth = Month(oWB.Sheets("Raw Data").Cells(2, 3).Value)
IntEndMonth = Month(oWB.Sheets("Raw Data").Cells(3, 3).Value)
CurrentYear = Year(Now)
End If
StartDate = oWS.Cells(1, 7).Value
EndDate = oWS.Cells(2, 7).Value
ActStDate = oWS.Cells(1, 4).Value
ActEndDate = oWS.Cells(2, 4).Value

StDate = "<" & ActStDate
EndDte = "" & ActEndDate

'***** Hide Dates That are Outside Of User Selected Date Range
********
oWS.Range("B3").Select
If oWS.Cells(2, 4).Value = "" Then
oExcel.Selection.Group Start:=True, End:=True, By:=1,
Periods:=Array(False, _
False, False, True, False, False, False)
Else
oExcel.Selection.Group Start:=StartDate, End:=EndDate, By:=1,
Periods:=Array(False, _
False, False, True, False, False, False)
With oWS.PivotTables("Summary").PivotFields("TIMESTAMP" )
.PivotItems(StDate).Visible = False
.PivotItems(EndDte).Visible = False
End With
End If

'Application.Run "'PM#4 - Grades - TPD.xls'!CreateSheets"
'
'End Sub
'
'Public Sub CreateSheets()


'********** DECLARE VARIABLES *******
Static a, b, c, aLoop As Integer
Dim TopDataCellRow, LeftmostDataCellCol, NumberofDataColumns As
Integer
Dim PM4FirstTagRow, PM4TagColumn, NumberofWorksheets As Integer
Dim UnitsPath As String
Dim Grade As String
Dim GradeNumber As Variant
Dim TopLeftDataCell As String
Dim Average As Range
Dim ExitLoop As Boolean
Dim strAverageAddress As String
Dim intAverageAddress As Integer
Dim KeepGoin As Boolean
Dim LoopCounter As Integer
Dim NumberofMissingColumns As Integer

'************* Create Grade Sheets ***************

LoopCounter = 1002
KeepGoin = False

Do

If oWS.Cells(LoopCounter, 1) = "" Then
Exit Do
Else
KeepGoin = True
End If

oExcel.ScreenUpdating = False ' Disables screen changes

'********** INITIALIZE VARIABLES ******
If oWS.Cells(LoopCounter, 1) = "All" Then
Grade = "(All)"
Else
Grade = Trim(Str(oWS.Cells(LoopCounter, 1))) ' Grade of
paper
End If

TopDataCellRow = 6 ' Row of data immediately after
headings
LeftmostDataCellCol = 3 ' Column of data immediately after
units column (A=1,B=2,C=3,etc)
NumberofDataColumns = 7 ' # of Data Columns Not Including
"Avg." column
PM4FirstTagRow = 9 ' Row number of first tag in "Tags"
worksheet (PM # 4)
PM4TagColumn = 2 ' Column number of first tag in "Tags"
worksheet (PM # 4) - (A=1,B=2,C=3,etc)
UnitsPath = "='[Data Extractor.xls]Tags'!R" ' Excel link to "Tags"
worksheet

'*********** CREATE GRADESHEET **
If StrStartMonth = StrEndMonth Then
If IntEndDay - IntStartDay 25 Then
GradeSheet = Grade & " (" & StrStartMonth & ", " &
CurrentYear & ")"
ElseIf IntEndDay - IntStartDay = 7 Then
GradeSheet = Grade & " (" & StrStartMonth & " " &
IntStartDay & " - " & StrEndMonth & " " & IntEndDay & ", " &
CurrentYear & ")"
Else
End If
ElseIf IntStartMonth < IntEndMonth Then
GradeSheet = Grade & " (" & StrStartMonth & " - " & StrEndMonth
& ", " & CurrentYear & ")"
Else

End If

NumberofWorksheets = oWB.Worksheets.Count
oWB.Worksheets.Add After:=oWB.Worksheets(NumberofWorksheets)
oWB.ActiveSheet.Name = GradeSheet
Set oWSLoop = oWB.Worksheets(GradeSheet)

'*********** LINK DESCRIPTIONS *********
GetData oExcel.ThisWorkbook.Path & "\Data Extractor.xls", "Tags",
"A8:A150", oWSLoop.Range("A6"), True



' Windows("Data Extractor.xls").Activate
' oExcel.Run "'Data Extractor.xls'!WBActivateHandler"
' Sheets("Tags").Select
' Range("A8:A150").Select
' Selection.Copy
' Windows("PM#4 - Grades - TPD.xls").Activate
' oWSLoop.Range("A6").Select
' oWSLoop.Paste Link:=True

oWB.ActiveSheet.Range("A4").FormulaR1C1 = "Production at Reel
(tonnes/day)"
oWSLoop.Range("A4").Select
oExcel.Selection.Font.Bold = True
oExcel.Selection.Font.Italic = True

oWSLoop.Columns("A:A").ColumnWidth = 33.78
oWSLoop.Range("A6").Select
oExcel.Selection.FormatConditions.Delete
oExcel.Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="0"
oExcel.Selection.FormatConditions(1).Font.ColorInd ex = 2

oExcel.Selection.Copy
oWSLoop.Range("A7:B150").Select
oExcel.Selection.PasteSpecial Paste:=xlPasteFormats,
Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

oWSLoop.Range("A6").Select
oExcel.Selection.Font.Bold = True
oExcel.Selection.Font.Underline = xlUnderlineStyleSingle

oWSLoop.Columns("B:B").Select
With oExcel.Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

'*********** COPY AND PASTE DATA INTO GRADESHEETS ********
oWS.Select
' To avoid run-time errors set the following property to True.

'ActiveSheet.PivotTables("Summary").CubeFields("GR ADE").EnableMultiplePageItems
= True

oWB.ActiveSheet.PivotTables("Summary").PivotFields ("GRADE").CurrentPage
= Grade

aLoop = oExcel.WorksheetFunction.CountIf(oWS.Columns(1),
"Average")

If aLoop = 0 Then
oExcel.DisplayAlerts = False
oWB.Worksheets(NumberofWorksheets + 1).Delete
oExcel.DisplayAlerts = True
GoTo LastLine
End If

b = LeftmostDataCellCol
Set Average = oWS.Range("A4")

For a = 1 To aLoop
oWS.Select

' Find "Average" in Column "A"
Set Average = oWS.Columns(1).Find(What:="Average",
After:=Average, LookIn:=xlValues, Lookat:=xlWhole,
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)


'************* SKIP TO END

oWS.Select
oExcel.ScreenUpdating = True

LastLine:
LoopCounter = LoopCounter + 1
'
Loop While KeepGoin = True

oExcel.Calculation = xlCalculationAutomatic
oExcel.ScreenUpdating = True

'Clean up
[b]Set oWS = Nothing
Set oWSLoop = Nothing
'If Not oWB Is Nothing Then oWB.Close
Set oWB = Nothing
'oExcel.Quit
Set oExcel = Nothing*End Sub


--
stock11r
------------------------------------------------------------------------
stock11r's Profile: http://www.excelforum.com/member.php...o&userid=26251
View this thread: http://www.excelforum.com/showthread...hreadid=395464


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Changing a pivot table field items to current database Pete Straman Straman via OfficeKB.com Excel Programming 3 February 22nd 05 04:40 PM
Setting pivot table field (current page) to a chosen value Grant[_5_] Excel Programming 1 August 5th 04 02:24 AM
Copypicture method failed Kamal[_5_] Excel Programming 2 April 22nd 04 11:31 AM
Calculation Method Failed Martiin Excel Programming 2 December 1st 03 01:37 PM
Method ~ of Object ~ Failed. Joan Excel Programming 5 August 26th 03 08:13 PM


All times are GMT +1. The time now is 02:14 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"