Excel のグラフからデータを抽出するマクロ

文書翻訳 文書翻訳
文書番号: 300643 - 対象製品
Microsoft Excel 2000 については、次の資料を参照してください。213814
Microsoft Excel 98 以前のバージョンについては、次の資料を参照してください。137016
すべて展開する | すべて折りたたむ

目次

概要

Microsoft Excel では、データが外部のワークシートやブックにある場合でも、グラフからデータを取得できます。グラフの作成元またはリンク元のファイルが使用できないか、何らかの原因で破損している場合、この機能が役に立ちます。Microsoft Visual Basic for Applications のマクロを使用すると、グラフの元のデータが失われた場合でも、そのグラフ自体からデータを取得できます。

詳細

マイクロソフトは、この情報をプログラミング言語の使用方法の一例として提供するだけであり、市場性および特定目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。Microsoft Support 担当者は、特定のプロシージャの機能についての問い合わせにはお答えできますが、ユーザー固有の目的に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。

次のサンプル マクロは、アクティブなブックの "ChartData" という名前のワークシートに、最初の行の最初の列を先頭にしてグラフの元のデータを配置します。
  1. モジュール シートに次のマクロ コードを入力します。
    Sub GetChartValues()
       Dim NumberOfRows As Integer
       Dim X As Object
       Counter = 2
    
       ' Calculate the number of rows of data.
       NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
    
       Worksheets("ChartData").Cells(1, 1) = "X Values"
    
       ' Write x-axis values to worksheet.
       With Worksheets("ChartData")
          .Range(.Cells(2, 1), _
          .Cells(NumberOfRows + 1, 1)) = _
          Application.Transpose(ActiveChart.SeriesCollection(1).XValues)
       End With
    
       ' Loop through all series in the chart and write their values to
       ' the worksheet.
       For Each X In ActiveChart.SeriesCollection
          Worksheets("ChartData").Cells(1, Counter) = X.Name
    
          With Worksheets("ChartData")
             .Range(.Cells(2, Counter), _
             .Cells(NumberOfRows + 1, Counter)) = _
             Application.Transpose(X.Values)
          End With
    
          Counter = Counter + 1
       Next
    
    End Sub
    					
  2. ブックに新しいワークシートを挿入し、"ChartData" という名前に変更します (引用符は含めません)。
  3. 基になるデータの値の抽出元であるグラフをクリックします。

    : グラフは、ワークシートまたは別のグラフ シートに埋め込まれている場合があります。
  4. GetChartValues マクロを実行します。

    グラフのデータが、ChartData ワークシートに配置されます。

回復したデータにグラフをリンクする手順

回復したデータにグラフを連携させるには、失われた、または破損したブックへのリンクを保持するのではなく、新しいデータ シートにグラフをリンクする必要があります。
  1. グラフをクリックし、系列をクリックして、グラフのリンク元になっている破損、または失われたブック内のシート名を見つけます。数式バーの系列数式に、シート名が表示されます。

    : シート名の前に "[Book1]" のように角かっこで囲まれたブック名が表示され、後ろには、セル参照の開始を示す感嘆符 "!" (または、アポストロフィと感嘆符 "'!") が表示されることがあります。角かっこの閉じ記号 "]" と感嘆符 (または、アポストロフィと感嘆符) の間の文字だけがシート名です。感嘆符の直前にアポストロフィがあっても、アポストロフィはシート名の末尾の文字にはならないため、除きます。
  2. ChartData という名前の新しいシートのタブをダブルクリックします。
  3. 反転表示している "ChartData" の上から、手順 1. で見つけた元のシート名を入力し、Enter キーを押します。この名前は、破損または失われたブックのシート名と同じにする必要があります。
  4. グラフとデータ シートのあるこのファイルを保存していない場合は、ファイルを保存します。
  5. Excel 2003 または Excel 2002 では、[編集] メニューの [リンクの設定] をクリックします。

    Excel 2007 では、[データ] タブをクリックし、[接続] の [リンクの編集] をクリックします。
  6. [リンク元] ボックスの一覧で、変更対象のリンクをクリックし、[リンク元の変更] をクリックします。
  7. [リンク元の変更] ダイアログ ボックスで、回復したデータとグラフがある新しいファイルをクリックし、[OK] をクリックします。
  8. 次のエラー メッセージが表示される場合があります。
    数式に、無効な外部参照が含まれています。
    この場合は、手順 3. で入力したシート名が元のシート名と異なっている可能性があるため、手順 1. に戻ります。
  9. [リンク元] ボックスの一覧に何も表示されなくなる場合があります。これは、いずれのリンク元もアクティブなファイルであり、破損または失われたファイルではないことを示しています。[閉じる] をクリックします。
アクティブなブックの、名前を変更したシート上にある回復したデータをグラフが参照し、連携するようになります。

プロパティ

文書番号: 300643 - 最終更新日: 2007年3月27日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
キーワード:?
kbdtacode kbhowto kbprogramming KB300643
"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