Limited dissolved over thousands of objects
To change the context object (for operators) use 

context.scene.objects.active = obj


or new in 2.8, instead use

context.view_layer.objects.active = obj
# and select with 
obj.select_set(state=True)


as well as (or instead of) setting the select property.  

In your code above you would be running the op on context object for each object.

For multiple objects consider using the bmesh module as shown in this
Related Answer,  replace the remove doubles bmesh operator with limited dissolve.

Test code, runs the limited dissolve on every selected mesh object. 

import bpy
import bmesh
from math import radians

context = bpy.context

distance = 0.0 # remove doubles tolerance.
if True: #def execute(self, context):

    meshes = set(o.data for o in context.selected_objects
                      if o.type == 'MESH')

    bm = bmesh.new()

    for m in meshes:
        bm.from_mesh(m)
        bmesh.ops.dissolve_limit(bm, angle_limit=radians(1.7), verts=bm.verts, edges=bm.edges)
        bm.to_mesh(m)
        m.update()
        bm.clear()

    bm.free()


On a side note, suggest using string formatting to make key names.

key = "Shape_IndexedFaceSet.%d_%d" % (hundreds, tens)
obj = scene.objects.get(key) # obj is None if not exist.


or with f-strings

key = f"Shape_IndexedFaceSet.{hundreds}_{tens}"