<p>Delphi で Excel の機能を使う場合に、CreateOleObject など COM の機能を使って呼び出すのだが、この際に下記のメッセージが表示されることがある。</p>
<blockquote>CoInitializeが呼び出されていません</blockquote>
<p>GUI アプリケーションを作っている場合には、Forms ユニットあたりで CoInitialize が呼び出されているのだろうが、CUI アプリだと100% エラーが表示される。<br />
このため、CUI アプリケーションでこのエラーメッセージを回避するには、CoInitialize を呼び出すなどの対策が必要になる。また、CoInitialize と対で CoUninitialize を呼び出さないといけない。<br />
実際の対策は実に簡単で、</p>
<ol>
    <li>uses に ActiveX を追加</li>
    <li>COM 機能を使用しているコードの前に CoInitialize を追加</li>
    <li>COM 機能を使用し終えたところで、 CoUninitialize を追加</li>
</ol>
<p>COM を使うとその部分は、結構長くなることが多いと思うので、クラス化して、その Create と Destroy に それぞれ CoInitialize と CoUninitialize を追加するのがオススメである。</p>
<p>※複数回 COM 機能を使うときにも、全体を CoInitialize と CoUninitialize で囲むように追加すれば OK !</p>