The way I've got round this same issue in the past is to make use of a friendly web service.
If you can get access to a web server on the network, set up a simple query service using your favourite web scripting language (PHP, PERL, Python, JavaScript/Node.js) that returns a tabular view of the data.
That way you no longer need an ODBC connection on each PC. Instead you do a web query which is embedded in the spreadsheet itself. Web queries can also contain parameters based on other cells so it is easy to create personalised queries for each person running the spreadsheet.
To create a web service like this, you have a couple of options. You could pay for a hosted web site on the Internet. Even a few dollars per year will get you a PHP driven web host. In this case, jump down to step 4.
Alternatively, if having your data exposed to the internet is not feasible, you'll need to set up your own. Here are the basics:
1) You will need a web server. It is very easy to set one up if you have a PC on your network - there are loads of help sites out there for doing this. Use Apache on Ubuntu or Debian Linux as this is the simplest to set up with the best community support. Alternatively, set up a simple Windows server with IIS.
2) You need a scripting language. PHP is recommended as the simplest entry point and is very well supported. Again there is plenty of help out there. If using Ubuntu or Debian, Apache and PHP are in the software repositories: apt-get install apache2 php5
should do the necessary. Here I am assuming that MySQL is already set up somewhere.
3) You need to set up a PHP driven web site. Again, plenty of help out there, I wont repeat all of that here
Before continuing, one quick asside. You can actually do all of this from a single workstation if you wish and if your needs are simple as they are here. Have a look at EasyPHP which gives a very simple way to set up everything you need. It is designed for development PCs but, as long as your security needs are simple, it is fine for this. For similar alternatives, search for "WAMP".
4) Now you need to use PHP to query your MySQL tables. Whilst you could write this yourself, it would mean learning PHP! Not that hard but certainly time consuming. So I'll recommend using a library. Check out one of: DaDaBik or PHPmyEdit. Either of these can be used to build simple interfaces to database tables and would be suitable for this task. I've used PHPmyEdit to build a temporary interface to a national system registration application for a very large public body.
5) You should be looking to end up with a web page that returns an HTML table with the data you need for your spreadsheet. Now, in the template spreadsheet, you insert a web query pointing at that page, select the table of results. The query is embedded in the spreadsheet, anyone with access to that web page can now use the data.
Finally, if you need to allow filtering, adjust the web page to allow query parameters to be passed, you'll need to check out the documentation of the library you chose but it shouldn't be that difficult to work out. query parameters can be added into the web query in the spreadsheet.