現在オフラインです。再接続するためにインターネットの接続を待っています

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

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

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   NextEnd 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. [リンク元] ボックスの一覧に何も表示されなくなる場合があります。これは、いずれのリンク元もアクティブなファイルであり、破損または失われたファイルではないことを示しています。[閉じる] をクリックします。
アクティブなブックの、名前を変更したシート上にある回復したデータをグラフが参照し、連携するようになります。
link unlink recover corrupt damage repair inf XL2002 XL2003 XL2007
プロパティ

文書番号:300643 - 最終更新日: 03/27/2007 02:17:59 - リビジョン: 4.1

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition

  • kbdtacode kbhowto kbprogramming KB300643
フィードバック
="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> >