Ever had the problem of your schematic elements having fallen
completely off the grid ? The following ULPs helped a lot for
me..
It's still a little tedious, mostly because EAGLE cannot do
editing comands from ULPs, so you need intermediate script
files called 'snap.scr' in the current project directory to 
do the actual snapping.
In addition, moving parts or wires will also move adjacent
wire ends, so they will not be found any more when it's 
their turn (since moves in schematics are by position, not
by name as in boards).
Good news is that the ULPs read the current grid setting,
so you just have to change the grid width in the schematic
editor, not in the ULPs.

So proceed like this :
1. set desired grid in schematic editor
2. run SNPSP.ULP and resulting snap.scr to snap parts
3. run SNPSJ.ULP and resulting snap.scr to snap junctions
4. run SNPSW1.ULP and resulting snap.scr to snap wire ends #1
5. run SNPSW2.ULP and resulting snap.scr to snap wire ends #2

This should do most of the job; repeating steps 2-5 may improve
the results, maybe even better with 4. and 5. reversed. The
remaining off-grid elements should be easy to identify.
For parts, get the position with the (I) button and 
MOVE (oldx oldy) (newx newy) with grid set to finest.
For wires, placing a junction dot at the offending connection
and running step 3. again should help.

Uploaded to cadsoft user files as snap_sch.zip on Jan.28,2000

README.TXT
SNPSP.ULP	- snaps schematic part instances to current grid
SNPSJ.ULP	- snaps schematic wire junctions to current grid
SNPSW1.ULP	- snaps schematic wire ends #1   to current grid
SNPSW2.ULP	- snaps schematic wire ends #2   to current grid

Andreas Schulz	accot.schulz@nord-com.net