none
Excelの操作方法 RRS feed

  • 質問

  • すいません。EXCELの操作方法を教えてください。

    EXCEL2003

    いろいろなとこで、それに関して説明されているのですが、よくわかりません。

    今、このHPで紹介されている方法を試したいのですが、

    1.Appwizardでプロジェクトを作成するときに”オートメーション”のチェックをいれるというところが、理解できません。

    これは、VC++EXPRESSにはないものでしょうか?

    なければ、それに該当するほかの方法はあるのでしょうか?

    すいません。かなりの初心者なんで教えてください。

    http://www.ujasiri.com/prglib/vc/excel/import/expcom/expcom.html

     

    2007年1月12日 6:10

回答

すべての返信

  • VCExpressだと Windows フォームアプリケーションでしょうか?
    その場合、Excelを#importで使うのはカナリ難しいです。
    といって、C#やVB.NETのように参照設定を使って使うのもいろいろ気を使います。
    (多分一番相性が悪いプロジェクトだと思う→VC++ Windows フォームアプリケーション)

    とりあえず、Platform SDKはセットアップ済みでしょうか?
    これがないと #import のやり方は使えないかなぁと思います。


    実際私も、Windows フォームアプリケーションから #import でExcelを使おうとしましたけど、
    いろいろ例外的なことが多くて(CoInitializeが必要ないとか、Formのメンバ変数として_com_ptr_tを
    直接もてないのでポインタにしないといけないとか)あまりうまくいっていません。

    VC++ Windows フォームアプリケーションの場合
    やはり、素直にC#やVB.NETのように参照設定を使うほうがよさそうな気がしてきています。
    (私は使ったことないのでアドバイスできません。)


    VC++ Win32プロジェクトであれば、普通に参照先のサイトのように #import で扱えます。
    (確認済み。但しPlatform SDKはもちろんセットアップ済みでなければならない。)

    Excel2003ならば、

    #import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL" rename("DocumentProperties", "DocumentPropertiesXL")  
    #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"  
    #import "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces

    という記述になるでしょう。
    で、
    http://www.ujasiri.com/prglib/vc/excel/import/xls_imp_open_2003.html
    のようなコードを書きます。
    2007年1月12日 6:23
  • 毎度、回答ありがとうございます。

    残念ながら、そのWindowsフォームアプリケーションです。

    SDKはインストールしてはありますが。。。

    参照設定の方がよいのであれば、ちょっと、調べてみます。

    とりあえず、がんばってみます。。。

    他に、何かよい情報がありましたら、また、よろしくお願いします。

     

    2007年1月12日 6:55
  •  大迫 さんからの引用

    参照設定の方がよいのであれば、ちょっと、調べてみます。


    おそらく、C++/CLIベースのExcelの参照設定を解説したサイトは少ないと思います。
    ですので、C#やVBを元にC++/CLIに置き換えてみるとよいでしょう。

    一応じゃんぬさんのところ
    http://jeanne.wankuma.com/tips/excel/

    @ITの過去ログ
    Excel(.xls)の読み書きについて(C++/CLI)
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30758&forum=7


    # 暇があったら、Windowsフォームアプリケーションから#importでExcelをつかうとのBlogを
    # 書いてみようかな。
    2007年1月12日 7:04
  • # 暇があったら、Windowsフォームアプリケーションから#importでExcelをつかうとのBlogを
    # 書いてみようかな。

    はい。ぜひ、お願いします。

    ちなみに、Windowsフォームアプリケーションはとりあえず、あきらめて。

    コンソールアプリケーションでDLLとしてExcelをコントロールするようにして。

    それを、Windowsフォームアプリケーションで操作できるようにしてみようかなと思います。

    ちょっと、まわりくどいですけど、僕のレベルでは、そんな手段でExcelを使うしかないのかなって思います。

    では、ありがとうございました。

    2007年1月15日 3:06
  • 大迫さん、こんにちは。

     大迫 さんからの引用
    コンソールアプリケーションでDLLとしてExcelをコントロールするようにして。
    それを、Windowsフォームアプリケーションで操作できるようにしてみようかなと思います。
    ちょっと、まわりくどいですけど、僕のレベルでは、そんな手段でExcelを使うしかないのかなって思います。

    Windows アプリケーションでも、コンソール アプリケーションでも全く一緒ですので、
    別に、コンソール アプリケーションを選択しなくても良いです。

    個人的には、C++ で COM を扱うなら CLR から介さない方がスマートだと思います。
    または、VBA 側にコードを書くか、スクリプトでも流し込んだ方が安全です。

    2007年1月15日 3:30