Excelでは、[オプション]ダイアログボックスの[表示]タブで[数式]チェックボックスがオンになっていることを確認するだけで、数式をワークシートに表示できます。これは、ワークシートの作成に使用された数式を示すワークシートを印刷するための便利な方法です。

ただし、このアプローチは、ワークシートで使用されている数式がかなり短い場合にのみうまく機能します。数式が長い場合、数式が表示されたワークシートを理解することは、すぐに面倒な作業になる可能性があります。

1つの解決策は、Excelから数式を取得し、Wordなどのプログラムに配置することです。なぜ言葉?テキスト属性(書体やポイントサイズなど)を簡単にフォーマットして、数式を最適に表示できるためです。必要に応じて、数式を説明するテキストを追加することもできます。

ExcelからWordに数式を取得する最も簡単な方法は、次の手順に従うことです。

。 [Excelのオプション]ダイアログボックスを表示します。 (Excel 2007では、[Office]ボタンをクリックし、[Excelオプション]をクリックします。Excel2010では、リボンの[ファイル]タブを表示し、[オプション]をクリックします。)

。ダイアログボックスの左側にある[詳細]をクリックします。

。このワークシートの「表示オプション」というタイトルのセクションが表示されるまで、オプションのリストをスクロールします。 (図1を参照)

。 [計算結果ではなくセルに数式を表示する]チェックボックスがオンになっていることを確認します。

。 [OK]をクリックします。これで、Excelに数式が表示されます。

。数式をWordにコピーするセルを選択します。

。 Ctrl + Cを押して、セルをクリップボードにコピーします。

。 Wordに切り替えます。

。情報を追加する挿入ポイントを配置します。

。リボンの[ホーム]タブを表示します。

。貼り付けツールの下にある下向き矢印をクリックし、[形式を選択して貼り付け]を選択します。 Wordは、[形式を選択して貼り付け]ダイアログボックスを表示します。

。 [書式なしテキスト]オプションを選択します。

。 [OK]をクリックします。

この時点で、数式はWordに含まれているので、必要に応じて数式を使用できます。このアプローチはうまく機能しますが、コピーする数式が多数ある場合は、これを何度も繰り返すのが面倒になる可能性があります。

このような状況にある場合は、実際に数式をプルしてWord文書に配置するマクロを使用すると便利です。次のExcelマクロはまさにそれを行います:

Sub WriteFormulasToWord()

Dim Wrd As New Word.Application     Dim CellTxt As String     Dim CellAddr As String     Dim SRow As Long     Dim SCol As Long

Wrd.Visible = True     Wrd.Documents.Add

Wrd.Selection.TypeText Text:="List of the Formulas of Sheet """ _       & ActiveSheet.Name & """ in Workbook """ _       & ActiveWorkbook.Name & """."

Wrd.Selection.TypeText Text:=vbCrLf & vbCrLf

'Change the following line to pick the number of columns     For SCol = 1 To 5         'Change the following line to pick the number of rows         For SRow = 1 To 10             If Cells(SRow, SCol).HasFormula Then                 CellAddr = Chr(64 + SCol) & Trim(Str(SRow)) & vbTab                 CellTxt = ActiveSheet.Cells(SRow, SCol).Formula                 Wrd.Selection.TypeText Text:=CellAddr & CellTxt                 Wrd.Selection.TypeText Text:=vbCrLf             End If         Next SRow         Wrd.Selection.TypeText Text:=vbCrLf     Next SCol End Sub

このマクロには注意すべき点がいくつかあります。まず、SColとSRowの両方を使用する前述のForステートメントを変更することにより、マクロが機能する行と列の範囲を変更できます。上記の例では、マクロは列1から5(AからE)および行1から10から数式をプルします。

さらに、Wordオブジェクトへの参照を処理するようにExcelマクロを設定しない限り、このマクロは正しく機能しません。これを行うには、VBAエディター内で次の手順を実行します。

。 [ツール]メニューから[参照]を選択します。 VBAは[参照]ダイアログボックスを表示します。 (図2を参照)

。 Microsoft Word Object Libraryと呼ばれるものが表示されるまで、参照のリストをスクロールします。 (Microsoft Word 12.0オブジェクトライブラリなど、参照名にバージョン番号が含まれている場合があります。)

。オブジェクトライブラリの左側にあるチェックボックスが選択されていることを確認します。

。 [OK]をクリックします。

マクロを使用して実際に数式を取得する利点は、Word文書に配置される内容を正確にカスタマイズできることです。このマクロの場合、セルのアドレスが挿入され、次にタブ文字が挿入され、次に実際の数式が挿入されます。挿入された情報を、特定のインスタンスで必要なものに簡単に変更できます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(6233)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。