Excel操作時のコンパイルエラー


すだこ  2007-11-20 18:27:08  No: 66924

VS2005でMFCを使って作成しています。
現在、COMを使ってExcel操作をしているのですが
テスト用に作った、必要最低限のプロジェクトではエラーにならないのですが
既存のプロジェクトに追加しようとするとエラーになってしまい困っています。

↓これをヘッダーに記述すると
#import "C:\Program Files\Microsoft Office\Office\Mso9.dll" no_namespace rename("DocumentProperties", "DocumentPropertiesXL") rename("RGB", "RGBXL")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb" no_namespace
#import "C:\Program Files\Microsoft Office\Office\excel9.olb" exclude("IFont", "IPicture") rename("DialogBox", "DialogBoxXL") rename("RGB", "RGBXL") rename("DocumentProperties", "DocumentPropertiesXL") rename("CopyFile", "CopyFileXL") rename("ReplaceText", "ReplaceTextXL") no_dual_interfaces

↓このようなエラーが出ます。(100件を超えるので抜粋です)
warning C4278: 'X1': タイプ ライブラリ 'C:\Program Files\Microsoft Office\Office\Mso9.dll' の識別子は既にマクロです。'rename' 修飾子を使用してください。
warning C4278: 'SearchPath': タイプ ライブラリ 'C:\Program Files\Microsoft Office\Office\Mso9.dll' の識別子は既にマクロです。'rename' 修飾子を使用してください。
error C2143: 構文エラー : ')' が '文字列' の前にありません。
error C2143: 構文エラー : ';' が '文字列' の前にありません。
error C2761: 'HRESULT ShapeNodes::Insert(int,MsoSegmentType,MsoEditingType,float)' : メンバ関数の再宣言はできません。

エラーの個所に飛ぶと、mso9.tliやmso9.tlhのワーニングになっている変数のところでエラーになっています。
    HRESULT Insert (
        int Index,
        enum MsoSegmentType SegmentType,
        enum MsoEditingType EditingType,
        float X1,  <-- ここでエラー
        float Y1,
        float X2,
        float Y2,
        float X3,
        float Y3 );

X1〜Y3のワーニングはrenameで消えるので、↓これを追加して消したのですがエラーの消し方がわかりません
rename("X1", "X1XL") rename("X2", "X2XL") rename("X3", "X3XL") rename("Y1", "Y1XL") rename("Y2", "Y2XL") rename("Y3", "Y3XL") rename("SearchPath", "SearchPathXL")

そもそも、何が原因でエラーになっているのか、その理屈も全く分からない状態です。
X1とう変数名がなんらかの原因になっているようなのですが、mso9.tliやmso9.tlhの中を変更するのも抵抗がありますし、
変更して良いものなのかも分からないので困っています。
解決方法がわかりましたら、教えて下さい。よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加