You have several options for sending FIX messages from Excel.
First of all, writing a FIX engine from scratch is a small task. Firstly, the specification (especially for earlier versions such as 4.2) is rather ambiguous, and many details can only be known from practical experience. So, you better start with a turnkey solution.
You have several options:
1) From Excel, go to the remote API for the FIX engine. There are various commercial engines that you can find here: http://fixprotocol.org/products/1 - some offer excel plugins with their product SDK.
2) Insert QuickFIX.NET into your VBA code. See http://www.quickfixengine.org/ for code examples (too big topic to post in this answer).
3) Get the FIX plugin for Excel. There are several. I can not recommend one (for various reasons). Again, you can find the FIX Protocol Ltd website for some starting points: http://fixprotocol.org/products/2
One more note:
When I encoded this, the Excel streaming model did not allow asynchronous cell updates. Therefore, when I sent the command to the remote FIX server, the response messages (transactions) were received asynchronously. When I received the answer, I tried updating Excel. An Excel process might work if I were editing a cell at the same time when an update appeared.
One solution to overcome this is to use the Excel RTD interface (RTD = "Real-Time Data") to update your trading spot. This is another major topic. Here is the starting point:
Microsoft KB: setting up and using the RTD function in Excel
source share