Excel 2013では、XLLソフトウェア開発キットとC APIを使用して高性能なワークシート関数を作成できます。Excelは複数の開発インターフェースを提供しており、XLM、C API、VBA、COM、.NET Frameworkを介してカスタマイズ可能です。C APIを使用する主な理由は、高性能ワークシート関数の作成です。特に、Excel 2013ではクラスタサーバーへのマルチスレッドインターフェースが追加され、パフォーマンスが向上します。しかし、VBAやCOMと比べると、開発の複雑さが増します。ExcelはCOMを用いて外部アプリケーションからも操作可能です。
Excel 2013 における XLL ソフトウェア開発キットと C APIの活用
適用対象
Excel 2013 | Office 2013 | Visual Studio
Microsoft Excel 2013 XLL ソフトウェア開発キットと C API を利用することで、Excel 2013 用の高性能なワークシート関数を作成することができます。Excel 2013 の C API のアップグレードは、サードパーティや社内機能のパフォーマンスが重要なユーザーへの継続的なサポートを反映しています。
Excel プログラミングインターフェイス
Excel は、さまざまなアプリケーションを開発するためのオプションを提供しています。Excel のプログラミングインターフェイスは、以下の順序で以前のバージョンに追加されました。
-
XLM マクロ言語: Excel の拡張のための最初のユーザーアクセス可能な言語で、C API の基盤です。Excel 2010 でもサポートされていますが、XLM は Visual Basic for Applications (VBA) によって長い間取って代わられています。
-
C API と XLLs: Excel に統合された DLL です。これらの DLL は高性能ワークシート関数の追加のための最も直接的で高速なインターフェイスを提供しますが、後の技術に比べ複雑さが伴います。
-
VBA: Excel ワークブックオブジェクトに関連付けられた Visual Basic コードオブジェクトです。VBA では、イベントトラップ、カスタマイズ、およびユーザー定義関数やコマンドの追加が可能です。VBA は、最も一般的に使用され、最も簡単に利用できる拡張オプションです。
-
COM: Windows ベースのアプリケーションの相互運用性標準で、Excel のイベントやオブジェクトを公開します。VBA は COM を使用して Excel と相互作用します。Excel は COM タイプライブラリをエクスポートし、C++ COM コードリソースやアプリケーションが外部から Excel を制御できるようにします。
- Microsoft .NET フレームワーク: 分散環境向けの迅速なアプリケーション開発のために設計された多言語マネージドコード環境です。主なプログラミング言語は C# ですが、多くの言語が Microsoft 中間言語 (MSIL) にコンパイル可能です。Excel 2013 では .NET フレームワークのアセンブリ内に含まれるコードリソースにアクセスできます。
C API を使用する時期
XLL と C API を利用して高性能なワークシート関数を作成する主な理由は、パフォーマンスを重視するからです。XLL 関数はユーザー定義関数と呼ばれることが多いですが、XLL を作成するために必要な理解とスキルを得るための投資は、多くのユーザーにとって現実的ではありません。それでも、高性能関数の応用、および Excel 2013 における強力なサーバーリソースへのマルチスレッドインターフェイスの作成能力は、Excel の拡張性にとって非常に重要です。
Excel 2007 で導入された C API の改訂は、ユーザーインターフェイスのような機能ではなく、高性能な計算に関連する側面に重点を置いています。
高性能ユーザー定義ワークシート関数の作成
Excel C API は、XLL アドインを作成することで高性能なワークシート関数を作成する際に最適な選択肢です。C API によって、ワークシートデータへの最も直接的なアクセスが可能です。XLLs は Excel に対して DLL リソースへの最も直接的なアクセスを提供します。Excel 2013 では新しいデータタイプが追加され、最も重要なことは、ユーザー定義関数をクラスターサーバー上で実行するサポートが強化されています。
XLL 使用にはデメリットが伴います。C API には VBA、COM、または .NET フレームワークの高度な開発機能が欠けており、メモリ管理が低レベルであるため、開発者に対する責任が大きくなります。COM を通じてエクスポーズされる多くの Excel 機能は、C API にはエクスポーズされていません。
マルチスレッドサーバーへのアクセス
Excel 2007 で導入されたマルチスレッド再計算 (MTR) は、スレッドセーフな XLL ワークシート関数を作成することを可能にします。これらの関数を使用してマルチスレッドサーバーにアクセスできます。後述するセクションでは、これがユーザーによって観測されるパフォーマンスを劇的に向上させる方法を詳述します。
Excel ユーザーインターフェイスのカスタマイズ
多くのバージョンの Excelでは、C API はユーザーインターフェイスのカスタマイズには最適な選択肢ではありません。VBA は Excel オブジェクトやイベントへの優れたアクセスを提供します。Excel 2007 で導入されたユーザーインターフェイスは、外観や基盤技術が以前のバージョンとは大きく異なります。このインターフェイスを最適にカスタマイズするには、管理コードリソースを使用するのが最も良いでしょう。
インターネット上でアクセス可能なアプリケーションの作成
Excel Services は、2007 Microsoft Office システムで導入され、標準的なWebブラウザツールを使用してユーザーがワークブックおよび Excel 機能にアクセスできる最良の方法を提供します。
外部アプリケーションからの Excel 制御
Excel は COM インターフェイスを通じてオブジェクト、メソッド、およびイベントを公開します。そのため、COM を使用して独立したアプリケーションを作成し、Excel セッションを開始または制御したり、既存の Excel セッションを制御したりできます。
Excel の非同期呼び出し
Excel では、XLL が C API を呼び出すことを許可するのは、Excel が制御を XLL に移譲したときのみです。ワークシート関数が Excel によって呼び出されると、C API を使用して Excel にコールバックできます。
これにより、Excel が非同期イベントに反応することが制限されます。理想的には、外部プロセスがデータの変化をチェックし、そのプロセスが更新を取得し再計算を行うきっかけを作ることが望まれます。このプロセスを COM を用いて Excel にインターフェイスするアプリケーションを使用することで実現可能です。
C API と XLM の関係
XLM マクロ言語は、Excel において最初のユーザーアクセス可能なプログラミング環境でした。これにより、ユーザーは通常のワークシートのように見える特別なマクロシート上でカスタムコマンドや関数を作成できました。
Excel 2013 では、マクロシートが今でもサポートされており、SUM や LOG などの通常のワークシート関数に加えて、ワークシート上で入力できない項目にも対応しています。
XLM マクロシートおよび C API の様々な機能については、XLMacr8.hlp というヘルプファイルを参照することができます。
Excel のカスタマイズの最も簡単な方法は、VBA を使用することです。そのため、新しい機能は主に VBA を通じて利用可能であり、XLM や C API では利用できないことが多くあります。
詳しくは、Microsoft Learnを参照してください。
————-
Programming with the C API in Excel
Source link
Summary of Excel 2013 XLL Software Development Kit and C API
Overview:
The Microsoft Excel 2013 XLL Software Development Kit (SDK) allows for the creation of high-performance worksheet functions using the C API. This is particularly useful for applications where performance is crucial.
Excel Programming Interfaces
Excel offers various programming interfaces for developers, introduced in succession:
- XLM Macro Language: The original programming language for Excel.
- C API and XLLs: DLLs that provide the fastest way to add complex functions but come with increased complexity.
- VBA (Visual Basic for Applications): The most user-friendly and commonly used method for customizing Excel.
- COM (Component Object Model): Enables interoperability, allowing external applications to control Excel.
- .NET Framework: Supports multi-language development for applications that leverage Excel’s functionalities.
When to Use the C API
The C API is ideal for creating high-performance functions, especially when multithreaded operations are required. While powerful, it demands a solid understanding of low-level programming concepts, making it less accessible to casual developers.
Writing High-Performance Functions
XLLs facilitate direct access to worksheet data and are optimized for performance in Excel 2013. They can also utilize multithreaded recalculation, significantly improving execution times for complex calculations.
User Interface Customization
While the C API can customize user interfaces, VBA is generally preferred for better access to Excel’s objects and events. Developers should consider using .NET for more advanced UI customizations.
Internet Accessibility
Excel Services allows users to access Excel workbooks via web browsers. This promotes wider access to Excel functionalities online.
External Applications Control
Excel can be controlled externally through COM, enabling developers to create applications that can manage Excel sessions and execute commands without direct user interaction.
Asynchronous Interaction
Excel’s C API has limitations regarding asynchronous operations; it restricts callback mechanisms. However, COM does allow for more flexible interaction, letting external applications invoke Excel commands as needed.
Relationship between C API and XLM
The C API includes functionality from XLM, allowing for advanced worksheet operations. However, modern Excel has largely transitioned to VBA for most customization needs.
Conclusion
Excel 2013’s XLL SDK and its C API provide robust tools for developers aiming to enhance Excel’s capabilities, particularly for high-performance applications. Nonetheless, the complexity of the C API makes it less suitable for casual users compared to VBA and .NET solutions.