Gustav Brock
Gustav at cactus.dk
Thu Jul 14 07:51:20 CDT 2011
Hi Brad
Without going deeper into your code, in Excel always be extremely careful and strict with properties, methods, and objects.
Here you mix Sheet for Worksheet which is a no-no, and you use Select where you could use the much faster Activate.
Also, objects should be closed if possible before setting them to Nothing.
/gustav
>>> BradM at blackforestltd.com 14-07-2011 14:27 >>>
All,
I am just starting to experiment with Access/Excel Automation
Through a process of trial and error I have developed a small test
Access application that is able to build a simple Excel Pivot Table.
Building and viewing the Pivot Table works nicely the first time I
execute the Access VBA code. If I exit Access and get back in again,
things work nicely.
However, when I try to execute the code more than one time (without
getting out of Access), I receive Error 91 - "Object Variable or With
block variable Not Set".
I have tried many things but I cannot figure out how to prevent this
error. I must be missing something.
Below is the code that I am using. Thanks for your help with this.
Brad
~~~~~~~~~~~~~
Dim XLApp As Excel.Application
Dim XLWorkbook As Excel.Workbook
Dim XLSheet As Excel.Worksheet
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = True
Set XLWorkbook = XLApp.Workbooks.Add
Set XLSheet = XLWorkbook.Sheets(1)
XLSheet.Cells(1, 1).Value = "State"
XLSheet.Cells(2, 1).Value = "MN"
XLSheet.Cells(3, 1).Value = "WI"
XLSheet.Cells(4, 1).Value = "SD"
XLSheet.Cells(5, 1).Value = "ND"
XLSheet.Cells(1, 2).Value = "Sales_Amt"
XLSheet.Cells(2, 2).Value = "200"
XLSheet.Cells(3, 2).Value = "300"
XLSheet.Cells(4, 2).Value = "400"
XLSheet.Cells(5, 2).Value = "500"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R5C2",
Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Sheet1!R9C1", TableName:="PivotTable3",
DefaultVersion _
:=xlPivotTableVersion12
Sheets("Sheet1").Select
Cells(9, 1).Select
ActiveSheet.PivotTables("PivotTable3").PivotFields("State").Orientation
= xlRowField
ActiveSheet.PivotTables("PivotTable3").PivotFields("State").Position = 1
ActiveSheet.PivotTables("PivotTable3").AddDataField
ActiveSheet.PivotTables( _
"PivotTable3").PivotFields("Sales_Amt"), "Sum of Sales_Amt", xlSum
Set XLApp = Nothing
Set XLWorkbook = Nothing
Set XLSheet = Nothing
~~~~~~~~~~~~~ End of Code ~ ~~~~~~~~~
The Error 91 is issued on this statement on the "Second Execution"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R5C2",
Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Sheet1!R9C1", TableName:="PivotTable3",
DefaultVersion _
:=xlPivotTableVersion12
~~~~~~~~~~~~