あるワークブックから別のワークブックにデータをコピーするスクリプトを書いています。後者は一種のデータベースとして使用されています(私の考えではありません)。テストとして、最大300行のデータをコピーしています。そのうち、3列は条件付き書式で、残りはプレーンテキストです。テキストのコピーは簡単でほぼ瞬時に行われますが、フォーマットはより困難です。現在、フォーマットされたセルをコピーするために以下のコードを使用しています。
thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).Copy
masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).PasteSpecial (xlPasteAll)
〜300行の場合、これには約40秒かかりますが、これは遅すぎます。複数の行で構成される範囲は順番に貼り付けられないため、コピーできません。
次のコードを試して、フォーマットをコピーしてみました。
masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).value = thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).value
masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).Font.Color = thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).Font.Color
masterSheet.Range("G" & CStr(mRow), "I" & CStr(mRow)).Interior.ColorIndex = thisSheet.Range("G" & CStr(rRow), "I" & CStr(rRow)).Interior.ColorIndex
'cell color and font color are the only things i am interested in
このコードは約3秒で実行されますが、条件付き書式によって適用された書式はコピーされません。
条件付き書式で適用されたセルとフォントの色をコピーするより効率的な方法はありますか?