To tell if a column is grouped, use the OutlineLevel property. If the level is greater than one it is part of a group...
If Worksheets("Sheet1").Columns(2).OutlineLevel > 1 Then
Range("A1").Value = "This column is part of a group"
End If
This can obviously be modified to loop through all columns on a sheet or a range as you need.
To Hide or unhide use ShowLevels...
ActiveSheet.Outline.ShowLevels RowLevels:=1
The above will collapse all groups, leaving just Level 1 visible (level one are not part of groups).
If there are three levels in the outline and you select 2 as RowLevels, level 2 will be visible but level three will be hidden (grouped).
If you specify a number greater than the number of levels in an outline then all levels will be visible.
This should get you started.
"The new phonebooks are here!"