0

C++ と ADO を使用して MS Excel ファイルから列ヘッダーを読み取るコードがあります。OpenSchema(adSchemaColumns) コマンドが失敗するこの 1 つの Excel ファイルを誰かから入手しました (エラー: 0x800A0CB3: "オブジェクトまたはプロバイダーは、要求された操作を実行できません")。問題を絞り込むために、ファイルからすべてのデータを削除し、列 A を除くすべての列を削除しました。列 A も削除すると、OpenSchema は成功します。そうしないと、失敗します。Excel CELL関数を使用して列Aを他の列と比較しました:フォーマット、保護、内容:しかし違いはありません。

いずれにせよ、OpenSchema(adSchemaTables) は失敗しません。

これは、VS2010 でビルドされた、私が使用する C++ コードの抜粋です。

#import "C:\Program Files\Common Files\System\ADO\msado28.tlb" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")

_ConnectionPtr pCon;
pCon.CreateInstance(__uuidof(Connection))
pCon->Open(connStr, "", "", NULL)
_RecordsetPtr pSchema = NULL;
pSchema = pCon->OpenSchema(adSchemaColumns);

これは、問題のある Excel ファイルへのリンクです: workbook.xls

MS Excel 2010 を使用しています。

再現するには: 変更されていない workbook.xls でコードを実行します - 失敗します。列 A を削除 - 成功。

どんなアイデアでも大歓迎です

ありがとうございました

4

0 に答える 0