Software is usually not auto-contained, as it commonly needs (by system design) to write data to system's and user's paths, to registry (to register some features in current system), to temp path, etc...
Some software can be made portable redirecting those data to temporary path, or inside program's path, but that widely depends on the design of the program itself if this is possible or not.
So, when you copy Office folder, you miss a lot of data written elsewhere, that's why it will not work simply copying that folder on another machine.
But copying data you don't have this problem, if the user can read the data it can copy it either using system's file manager or many other tricks even if you try to make it deliberately difficult - you can disable browsing (i.e. access with a terminal service to a specific program only), disable usb ports, use data linked elsewhere, etc - as every protection method has its shortcomings.
The most extreme way to provide data without ability to copying it would be using a remote presentation layer, such as a website frontend or web app to show the data to authenticated users, but in any case the user can write down the data - even record by record, using some automation - and you need anyway to carefully check the security of your solution (most obvious thing, SQL injection attacks to your database).
Bottom line, when the user can read the data, you can't be very effective in preventing him to roll out a solution to export it - the best you can do is 1) being selective about who access to data and 2) track their data queries to spot out possible abuses.