If we are still talking RSLogix500 and by subroutine you mean an entire Lad File then:
You can copy from one program and paste directly to another program.
Just be careful not to over write and existing ladder like you did with the IP address.
Example: If you want to put a LAD from program A in to Program B.
If in program A the LAD you want to copy is LAD #4, just highlight LAD 4 in the Project Tree, Right Click and say Copy.
Now in Program B Right click on "Program Files" and select "New".
A new LAD is now created.
Highlight this NEW LAD (and this is important, make sure you are highlighting the NEW LAD you just made not an existing one) then Right click on the NEW LAD and select "Paste".
The instruction descriptions and rung comments will not transfer to the new program, and I am not sure if you can filter a ASCII Export/Import for a single Lad Between 2 programs.
If you cant then you will have to add the Instruction Comments and Rung Descriptions back manually.
This is much easier in Logix5000 as you can Export and Import routines / programs in their entirety.
From what you did before though it seems you used the entire program, so just changing the IP address and downloading like you did seems much simpler.
Just have to make sure you hit the right target with the correct IP address.
BCS