
SaveAs 関数にてデータを Excel で出力させる際に、開発環境では Excel ファイルが正しく出力されるが、実行環境では Excel が出力されない。
その際、エラーメッセージ等も特に表示されていない。
開発環境は PowerBuilder のフルインストールにより必要なファイルが揃っているものの、実行環境では XLSX 形式の Excel 出力に必要なランタイムファイルが不足している、もしくは正しく配置・登録されていないという可能性が考えられます 。
SaveAs 関数で XLSX! を指定して Excel ファイルを出力する場合、PowerBuilder のコアランタイム以外に、以下の 2 つのランタイムファイルが必要です。
・PBDWExcel12Interop.dll
・Sybase.PowerBuilder.DataWindow.Excel12.dll
特に、Sybase.PowerBuilder.DataWindow.Excel12.dll は .NET アセンブリであるため、GAC(Global Assembly Cache)に登録するか、実行ファイル(EXE)と同じフォルダに配置する必要があります。
このファイルの不足や参照エラーが発生した場合、アプリケーションが強制終了したり、Excel ファイルが出力されない事象が報告されています。
また、PowerBuilder のバージョンアップに伴い、実行環境に配布されるランタイムファイルも同一のバージョン・ビルドである必要があります。
ビルドを更新した際にランタイムインストーラーを更新し忘れると、問題が発生する可能性もあります。
対応策としては、以下の方法で必要なランタイムの配置状況とバージョンを確認・修正してください。
実行環境に以下の 2 つのファイルが正しく配布されているかを確認してください。
・PBDWExcel12Interop.dll
・Sybase.PowerBuilder.DataWindow.Excel12.dll
ランタイムインストーラーを使用している場合:
PowerBuilder Runtime Packager を使用してインストーラーを作成する際、「MS Excel 12 サポート」にチェックが入っていることを確認し、インストーラーを再生成して実行環境に再インストールしてください。
これにより、 .NET アセンブリ(Sybase.PowerBuilder.DataWindow.Excel12.dll)が GAC に正しく登録されます。
ファイルをコピーして配布している場合:
上記の 2 つのファイルを、既に格納されている他のランタイムファイルと同じ場所へ加えて配置してください。
XLSX 形式の出力には、 .NET Framework 4.0 以上が必要とされています。
実行環境に適切なバージョンの .NET Framework がインストールされているか確認してください。
( .NET Framework 4 は Windows 8 以降では標準でインストールされているはずのため、通常では問題にならないケースがほとんどです)
コンパイルされたアプリケーションには、同一ビルドのランタイムが必要です。
実行環境に配布されているランタイムファイル(DLL)が、このビルドと一致しているかを再確認してください。
バージョンやビルドが異なる場合は、ランタイムインストーラーを再生成して配布しなおす必要があります。