How can I extract a list of dependent tables from an execution plan? Is there a way to extract a full list of tables and views used in a query?

I need to replicate a portion of a database so that we can avoid locking tables when a long query runs.

I have the execution plan. Is it possible to extract all the database objects the query touches?
If this was a one-off operation, I would be inclined to use SQL Sentry Plan Explorer (it's free!), rather than faff around writing a SQL Script.

Open the Execution Plan in Plan Explorer, navigate to the Query Columns pane and you can see a list of the objects that are used in the query.