Excel 2007 および Excel 2010 の互換性チェックの操作

**概要:**Microsoft Office Excel 2007 と Microsoft Excel 2010 には、互換性チェックが導入されています。これは、ブックを以前のバージョンの Microsoft Excel で保存するときに、再現性の低下や機能の損失を引き起こしそうな問題がないかどうかを調べる機能です。ここでは、これらのオプションについて説明し、関連するコード サンプルを確認します。

適用対象: Excel 2007 | Excel 2010 | Office 2007 | Office 2010 | SharePoint Server 2010 | VBA

目次

  • Excel の互換性チェック

  • 再現性の低下に関する問題

  • 機能の大幅な損失に関する問題

  • 互換性チェックをプログラムで操作する

  • まとめ

  • その他の技術情報

Excel の互換性チェック

Microsoft Office Excel 2007 または Microsoft Excel 2010 のブックに、以前のバージョンの Microsoft Excel の機能を大幅に損失したり、再現性を低下したりする原因となる互換性の問題が含まれていないことを確実にするために、互換性チェックを実行します。

注意

互換性チェックは、Microsoft Office Word 2007、Microsoft Word 2010、Microsoft Office PowerPoint 2007、および Microsoft PowerPoint 2010 でも使用できます。

互換性チェックは、ブックに、以前のバージョンの Excel によってサポートされていない機能が含まれていないかどうかを調べます。ブックを Excel 97-2003 ファイル形式で保存すると、Excel 2007 または Excel 2010 によってファイルがチェックされ、互換性の問題への対応をたずねるダイアログ ボックスが表示されます。また、互換性がない機能をリストするレポートを作成することもできます。ユーザーは互換性チェックを無効にできます。

さらに、次のどちらかの条件が当てはまる場合は、Excel 2007 または Excel 2010 よりも前のバージョンのファイル形式では使用できない機能があることを示すダイアログ画面が表示されることがあります。

  • Excel 2007 または Excel 2010 で開いている Excel 97-2003 ブック (.xls) を保存しようとしている。

  • Excel 2007 または Excel 2010 で開いている Excel ブックを、[名前を付けて保存] を使用して Excel 97-2003 (.xls) ファイル形式で保存する。

互換性チェックによって確認される条件の要約については、「Compatibility Mode in the 2007 Office System」を参照してください。

次のどちらかの操作を行えば、前述のとおり、ブックを保存するときに互換性チェックを無効にできます。

互換性チェックを無効にするには

  1. (Excel 2007 の場合) Office ボタンで、[配布準備] をクリックし、[互換性チェックの実行] をクリックして、[このブックを保存するときに互換性を確認する] チェック ボックスをオフにします。

  2. (Excel 2010 の場合) [ファイル] タブで、[情報] をクリックし、[問題のチェック] をクリックします。次に、[互換性​​チェック] をクリックし、[このブックを保存するときに互換性を確認する] チェック ボックスをオフにします。

再現性の低下に関する問題

スタイルによって書式が適用されている表がブックに含まれている場合、そのブックを以前のバージョンの Excel で保存しようとすると、図 1 に示すダイアログが表示されることがあります。

図 1. [再現性の低下] ダイアログ

[再現性の低下] ダイアログ

このメッセージの "低下" という言葉に注意してください。Excel 2007 または Excel 2010 のブックを以前のバージョンのファイル形式で保存すると、スタイルによって適用されている表の書式は削除されます。これらの書式を削除しないと、Excel 97-2003 (.xls) ファイル形式との互換性を維持できません。必要に応じて、互換性チェックを無効にしてブックを保存すると、そのブックを Excel 97-2003 で開いていても問題は発生しません。

機能の大幅な損失に関する問題

このカテゴリに含まれる問題が互換性チェックによって検出されると、図 2 に示すようなダイアログが表示されます。

図 2. [機能の大幅な損失] ダイアログ

[機能の大幅な損失] ダイアログ

注意

このカテゴリに含まれる問題の一覧の詳細については、Microsoft Excel 製品チームのブロク (英語)を参照してください。

このカテゴリに含まれる問題が検出された場合は、ファイルを保存しないでください。データの消失、一部の数式の機能不全、特定の機能の消失、またはこれらすべての問題が発生する可能性があります。

ただし、場合によっては、別のオプションも考えられます。たとえば、Excel 2007 または Excel 2010 の新しい数式を使用するのではなく、その代わりとなる別の数式を使用します (ただし、新しい数式の方が機能は優れている可能性があります)。たとえば、数式 =SUMIFS() と =COUNTIFS() は、ほぼ同等の機能を持つ数式 =SUMPRODUCT() に置き換えることができます。この数式の詳細については、ここ (英語)を参照してください。

また、別の方法として、256 (IV) 列 65,536 行を超える範囲でデータを使用しないというオプションも考えられます。代わりに、データを別のワークシートに挿入し、そのデータへのリンクを設定した方が適切であると考えられます。また、ブックを以前のバージョンの Excel で表示する PDF として保存しても、問題を緩和できることがあります。このオプションは、Microsoft Office 2010 と 2007 Microsoft Office system Service Pack 2 (SP2) に既定でインストールされます。

注意

2007 Microsoft Office system SP2 をインストールしない場合は、「2007 Microsoft Office プログラム用 Microsoft PDF 保存アドイン」から入手可能なアドインのみをインストールできます。

Excel 2007 または Excel 2010 のブックをユーザーに送信し、ユーザー側で Excel Viewer をダウンロードしてインストールすることもできます。Excel Viewer を使用すると、Excel がインストールされていなくても、Excel 97 から Excel 2010 までのブックを開く、表示、および印刷できます。

最後に、最適な方法であるとまでは言えませんが、Word/Excel/PowerPoint 用 Microsoft Office 互換機能パックをダウンロードします。このダウンロードを使用すると、Excel 2007 および Excel 2010 ファイル形式のブックを以前のバージョンの Excel で開く、編集、および保存できます。ただし、制限として、256 (IV) 列 65,536 行を超える範囲にあるデータは表示できません。また、ブックに Excel 2007 または Excel 2010 の新しい数式が含まれていると、ブックの再計算時に #NAME エラーが発生します。

互換性チェックをプログラムで操作する

前の説明で、[互換性チェック] ダイアログには、機能を無効または有効にする [このブックを保存するときに互換性を確認する] チェック ボックスがあることを確認しました。次のどちらかのステートメントを使用すると、Microsoft Visual Basic for Applications (VBA) でも、この機能を有効または無効にできます。

ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.CheckCompatibility = True

次の VBA サブルーチンを使用すると、Excel 2007 または Excel 2010 のブックを Excel 97-2003 のブックとして保存し、[互換性チェック] ダイアログを回避できます。ただし、ワークシートに互換性に関する問題がほとんど、またはまったく含まれていないことを確認したいでしょう。

Sub Save_2007_WorkSheet_As_97_2003_Workbook()
' Avoid the CheckCompatibility dialog when you copy a worksheet
' from an Excel 2007 or Excel 2010 file format with compatibility issues to a new
' workbook and save this workbook as an Excel 97 through Excel 2003 workbook.
    Dim Destwb As Workbook
    Dim SaveFormat As Long
    Dim TempFilePath As String
    Dim TempFileName As String

    ' Remember the users setting.
    SaveFormat = Application.DefaultSaveFormat
    ' Set the default format to the Excel 97 through Excel 2003 file format.
    Application.DefaultSaveFormat = 56

' You can specify a worksheet other than the active sheet by
' using the following syntax: Sheets("Sheet5").Copy.
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
    Destwb.CheckCompatibility = False

    ' Save the new workbook and close it.
    TempFilePath = Application.DefaultFilePath & "\"
    TempFileName = "Excel 97-2003 WorkBook " & Format(Now, "yyyy-mm-dd hh-mm-ss")

    With Destwb
        .SaveAs TempFilePath & TempFileName & ".xls", FileFormat:=56
        .Close SaveChanges:=False
    End With

    ' Set default save format back to the users setting.
    Application.DefaultSaveFormat = SaveFormat
    
    MsgBox "You can find the file in " & Application.DefaultFilePath
    
End Sub

次のサブルーチンを使用すると、Excel 2007 または Excel 2010 のワークシートを Excel 97-2003 のブックとして保存し、[互換性チェック] ダイアログを回避して、そのブックを電子メールに添付できます。ワークシートに互換性に関する問題がほとんど、またはまったく含まれていないことを確認したいでしょう。

注意

このサブルーチンは、次のプログラムで使用できます。

  • Microsoft Outlook Express

  • Microsoft Windows Mail

  • Microsoft Windows Live Mail

  • Microsoft Outlook

Sub Mail_ActiveSheet_As_97_2003_Workbook()
' Works with Excel 2007 and Excel 2010.
    Dim SaveFormat As Long
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim I As Long

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    ' Remember the users setting.
    SaveFormat = Application.DefaultSaveFormat
    ' Set the default to the Excel 97 through Excel 2003 file format.
    Application.DefaultSaveFormat = 56

    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook
    Destwb.CheckCompatibility = False

    ' Save and mail the new workbook and then close it.
    TempFilePath = Application.DefaultFilePath & "\"
    TempFileName = "Part of " & Sourcewb.Name & " " _
                 & Format(Now, "yyyy-mm-dd hh-mm-ss")

    With Destwb
        .SaveAs TempFilePath & TempFileName & ".xls", _
                FileFormat:=56
        On Error Resume Next
        For I = 1 To 3
            .SendMail "", _
                      "This is the Subject line"
            If Err.Number = 0 Then Exit For
        Next I
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    ' Delete the file that you have just sent.
    Kill TempFilePath & TempFileName & ".xls"

    ' Set default save format back to the users setting.
    Application.DefaultSaveFormat = SaveFormat

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

電子メールの例と、コードの変更方法のヒントについては、ここ (英語)を参照してください。

まとめ

Excel 2007 または Excel 2010 のファイルを以前のバージョンの Excel ファイル形式で保存すると、互換性の問題が発生して、再現性が低下したり、データや機能が大幅に損失したりすることがあります。互換性チェックを使用すると、そうした問題の発生を低減できます。

その他の技術情報

この記事に記載されているトピックの詳細については、次の追加情報を参照してください。