MFC を使用して Excel 2000 および Excel 2002 を自動化し、Excel 2000 および Excel 2002 の範囲から配列を取得する方法

文書翻訳 文書翻訳
文書番号: 186122
すべて展開する | すべて折りたたむ

目次

概要

この資料で Microsoft Excel を自動化する方法を示しています。配列に複数セルの範囲から値を取得します。

詳細

ない複数セルの範囲から値を取得するのには1 つのセルを照会する、GetValue のメンバー関数を使用する必要があります、値はバリアントを返すには、range オブジェクトです。SAFEARRAY を作成します。GetValue から返されるバリアントに基づいてください。SAFEARRAY を作成したら、GetElement を使用して、要素にアクセスすることができます。次の手順を示しています。このを処理し、文字列と数値の両方をアクセスする方法をデモンストレーションします。要素。

ノートを Microsoft Excel 2000、および 2002年を自動化します。

生成されたクラス ラッパーでは、この資料のサンプル コードを使用してください。Excel 97 オブジェクト ライブラリから (Excel 8.olb)。少し手を加えた、これExcel 用のクラス ラッパーを使用するオートメーション クライアントに適用できるコード2000 (Excel9.olb) または Excel 2002 (Excel.olb)。 使用に関する詳細についてこの記事は、Microsoft Excel 2000 または 2002年で記載されているサンプル コードタイプ ライブラリ、記事を表示するのには、次の文書番号をクリックして、技術情報:
224925 情報: Office のタイプ ライブラリは新しいリリースで変更可能性があります。

プロジェクトの作成手順

  1. Microsoft Excel で新しいブックを作成します。セルを挿入します。文字列と数値データが混在 A1:C8。ブックを保存します。"c:\test.xls"と Microsoft Excel を終了します。
  2. 1 〜 12 で、次の資料の手順を実行します、IDispatch を使用するサンプル プロジェクトを作成する技術インターフェイスとは、Excel8.olb タイプ ライブラリで定義されたメンバー関数。
    178749MFC およびタイプ ライブラリを使用してオートメーション プロジェクトを作成するには、方法
  3. AutoProjectDlg.cpp ファイルの先頭にある、追加の次の行:
          #include "excel8.h"
    					
  4. 次のコードを追加する CAutoProjectDlg::OnRun() のAutoProjectDlg.cpp ファイル:

    サンプル コード

          // OLE Variant for Optional.
          COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
          _Application objApp;
          _Workbook objBook;
          Workbooks objBooks;
          Worksheets objSheets;
          _Worksheet objSheet;
          Range objRange;
          VARIANT ret;
    
          // Instantiate Excel and open an existing workbook.
          objApp.CreateDispatch("Excel.Application");
          objBooks = objApp.GetWorkbooks();
          objBook = objBooks.Open("C:\\Test.xls",
                    VOptional, VOptional, VOptional, VOptional,
                    VOptional, VOptional, VOptional, VOptional,
                    VOptional, VOptional, VOptional, VOptional);
          objSheets = objBook.GetWorksheets();
          objSheet = objSheets.GetItem(COleVariant((short)1));
    
          //Get the range object for which you wish to retrieve the
          //data and then retrieve the data (as a variant array, ret).
          objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C8"));
          ret = objRange.GetValue();
    
          //Create the SAFEARRAY from the VARIANT ret.
          COleSafeArray sa(ret);
    
          //Determine the array's dimensions.
          long lNumRows;
          long lNumCols;
          sa.GetUBound(1, &lNumRows);
          sa.GetUBound(2, &lNumCols);
    
          //Display the elements in the SAFEARRAY.
          long index[2];
          VARIANT val;
          int r, c;
          TRACE("Contents of SafeArray\n");
          TRACE("=====================\n\t");
          for(c=1;c<=lNumCols;c++)
          {
             TRACE("\t\tCol %d", c);
          }
          TRACE("\n");
          for(r=1;r<=lNumRows;r++)
          {
             TRACE("Row %d", r);
             for(c=1;c<=lNumCols;c++)
             {
                index[0]=r;
                index[1]=c;
                sa.GetElement(index, &val);
                switch(val.vt)
                {
                case VT_R8:
                   {
                      TRACE("\t\t%1.2f", val.dblVal);
                      break;
                   }
                case VT_BSTR:
                   {
                      TRACE("\t\t%s",(CString)val.bstrVal);
                      break;
                   }
    
                case VT_EMPTY:
                   {
                      TRACE("\t\t<empty>");
                      break;
                   }
                }
             }
             TRACE("\n");
          }
    
          //Close the workbook without saving changes
          //and quit Microsoft Excel.
          objBook.Close(COleVariant((short)FALSE), VOptional, VOptional);
          objApp.Quit();
    					
  5. プロジェクトをコンパイルし、実行します。
  6. 実行をクリックします。セル A1:C8 内の値の表示、出力ウィンドウです。

関連情報

Microsoft Excel を自動化することに関する詳細についてMFC を使用してくださいクリックしてで記事を表示するのには以下の記事番号、技術情報:
186120 MFC を使用して Excel を自動化し、配列の範囲を入力する方法
184663 埋め込みおよび MFC で Excel ワークシートを自動化するには、方法
179706 MFC を使用して Excel を自動化し、新しいブックを作成/フォーマットする方法
178781[Howto]: MFC およびワークシート関数を使用して Excel を自動化します。
178783[Howto]: MFC を使用して、Microsoft Excel のグラフを作成するのには
167668文字列の safearray 型は、VARIANT * に渡すには、方法

プロパティ

文書番号: 186122 - 最終更新日: 2011年9月18日 - リビジョン: 4.0
キーワード:?
kbhowto kbinterop kbprogramming kbautomation kbfunctions kbmt KB186122 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:186122
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com