Hi Peter,
You are calling FP_FirstCell to get the first cell in the text frame, which is a valid operation. However, when you call FP_NextCell, you are then at a table-level operation, no longer working within the context of the text frame. So, it operates on the current table only, returning the next cell in that table. When it reaches the end of the current table, it returns zero. You'll never be able to get to any other tables with FP_NextCell.
Perhaps you could use one of the valid cell IDs to retrieve the table object ID, then you could use the FP_NextTableInDoc property on that table ID to get the next table, then drill down to the cells, etc. I don't know, however, if this will retrieve the tables in document order and I also don't know off the top of my head how to be sure a table is actually in a desired text frame, if that is important.
Russ