There was a resent topic titled "Put a bunch of components on Grid at once?" posted in the PADS Layout community. I think this is a fairly common issue that can arise when units get flipped between imperial & metric or when moving the design origin around. Sometimes we need to edit the board outline and the board datum will need to change as well etc. The quantity of offgrid components will often be so great that we just blow it off because it is sometimes not worth the effort to get them back on grid.
There was an old PADS script that would move components that were placed off grid, but I haven't been able to find it and I think it was so old that it might not work anymore anyway. I haven't found a way to move parts using the VBScripting in PADS, but I can do it using the internal macro language. The attached script uses a combination of both and seems to work with the limited testing that I've done. The 3 MCR files need to be place in you "default file folder" usually "C:\PADS Projects". You can place the BAS file wherever you keep other basic scripts.
The script starts by creating a collection of currently selected parts. If no parts are currently selected, ALL parts will be added to this collection. The script will probably fail if there are "glued" components in the collection, so you should either deselect them or unglue them first.