Excel には、条件付き書式を条件付き書式の結果に変換する簡単な方法がありません。すべてを手動で行う必要があります。
- 各セルで FormatCondition が使用されているかどうかを確認します。
- FormatCondition からフォーマットを手動で割り当てます。(
Borders
, Font
, Interior
, & NumberFormat
)
- 複数の FormatCondition がある場合、
StopIfTrue
が設定されていない限り、後者の形式が前の形式をオーバーライドします。
Microsoft Word がインストールされている場合は、範囲を Word にコピーして Excel に戻すことができ、Word で形式を変換できます。
Sub CopyConditionalFormattingThruWord(sAddress As String)
Dim appWord As Word.Application, doc As Word.Document
Dim wbkTo As Workbook
' copy from original table
ThisWorkbook.Activate
ThisWorkbook.Names!rngAreaMetricDetail.RefersToRange.Copy
' paste into word application and recopy
Set appWord = New Word.Application
With appWord
.Documents.Add DocumentType:=wdNewBlankDocument
' .Visible = True
.Selection.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
.Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
DoEvents
.Selection.Copy
End With
' copy to new workbook
Set wbkTo = Excel.Application.Workbooks.Add
wbkTo.Worksheets(1).Range(sAddress).Select
wbkTo.ActiveSheet.Paste
DoEvents
' close Word
appWord.Quit SaveChanges:=False
MsgBox "Done."
End Sub
注:これはフォーマットを 100% 正しくコピーするわけではありませんが、ほとんどの場合、これで十分です。以下の例では、左側の表の行 1 ~ 9 に 3 つの条件付き書式が適用されています。右の表は を実行した結果です CopyConditionalFormattingThruWord sAddress:="B3"
。

Excel 2010: Excel 2010
を使用していて、Word を使用したくない場合は、範囲の新しいDisplayFormat
メンバーを使用して FormatCondition テストをスキップできます。ヘルプ ファイルから:
範囲の条件付き書式やテーブル スタイルの変更などのアクションにより、現在のユーザー インターフェイスに表示される内容が、Range オブジェクトの対応するプロパティの値と一致しなくなる可能性があります。DisplayFormat オブジェクトのプロパティを使用して、現在のユーザー インターフェイスに表示される値を返します。
Borders
、Font
、Interior
、 &NumberFormat
などから手動で値を割り当てる必要があります。