'Resolution number: 41959 Created On: Mar 4 2004 'Product Family: SPSS Version: 'Problem Subject: Script To change bar colors For Each IGraph bar chart that only contains an x-axis variable 'Problem Description: I am using SPSS For Windows. I have an SPSS Output file that 'contains both Pivot Tables And IGraphs. For Each IGraph bar chart that only contains 'an x-axis variable, I would Like To change the bar color. How can I Do so automatically? 'Resolution Subject: The following script should assist you 'Resolution Description: 'The following script should assist you. Highlight the script below And click Edit->Copy. 'Next, click File->New->Script. Click Cancel. Delete Any visible Text. Click Edit->Paste. 'Next, click File->Save As And save the script using a Name such As, 'ChangeBarColors.sbs'. 'Exit the script window. 'In the Output window, make sure you at least have one IGraph that contains only an x-axis 'variable. Click Utilities->Run Script. Locate the saved script. Click Run. You should notice 'that For Each IGraph bar chart that contains only an x-axis variable, the bar chart color 'has been changed To green. For Any IGraph bar chart that contains a Legend variable, the 'bar colors have Not been changed. 'Read through the script For how To modify it To change bars To your desired color. '______________________________________________________________________________________ 'Begin Description 'This script will cycle through the output items 'of the currently open SPSS output 'For each IGraph bar chart found, the script will check to see that it only 'contains an x-axis variable 'The script will then change the bar color as specified in the script 'End Description Option Explicit Sub Main Dim objOutputDoc As ISpssOutputDoc Dim objOutputItems As ISpssItems Dim objOutputItem As ISpssItem Dim objSPSSIGraph As ISpssIGraph Dim objIgraph As ISpssIGraph Set objOutputDoc = objSpssApp.GetDesignatedOutputDoc 'We get Output Items and loop through to find each IGraph Set objOutputItems = objOutputDoc.Items() Dim intItemCount As Integer For intItemCount = 0 To objOutputItems.Count - 1 Set objOutputItem = objOutputItems.GetItem(intItemCount) If objOutputItem.SPSSType = SPSSIGraph Then Set objIgraph = objOutputItem.Activate Set objIgraph = objOutputItem.GetIGraphOleObject Call ChangeBarColors (objIgraph) objOutputItem.Deactivate End If Next End Sub Sub ChangeBarColors (objIgraph As ISpssIGraph) Dim I As Integer Dim objBar As ISpssIGraphBarElement Dim MyArea As ISpssIGraphArea Dim objVariableManager As ISpssIGraphVariablesMgr Set objVariableManager = objIgraph.VariablesMgr With objVariableManager For I = 0 To objIgraph.Elements.Count - 1 'here we check to see that there is not a legend variable If .IsAssigned(SpssIGraphColor) = False And .IsAssigned(SpssIGraphStyle)= False Then If objIgraph.Elements.Item(I).Type = SpssIGraphBar Then Set objBar = objIgraph.Elements.Item(I) Set MyArea=objBar.GetArea With MyArea 'here we change the bar color to green 'use the chart below to replace the code 'values for a different color .BackgroundColor = RGB(0,255,0) 'Color code below 'RGB values follow the color name 'Black 0, 0, 0 'Blue 0, 0, 255 'Cyan 0, 255, 255 'Green 0, 255, 0 'Magenta 255, 0, 255 'Red 255, 0, 0 'White 255, 255, 255 'Yellow 255, 255, 0 End With End If objIgraph.Redraw End If Next End With End Sub