Vbaで書式のみ高速コピ ぺする方法を教えてください
例えば一行目の書式をコピーして、五行目から十行目に貼り付けるということは
Selection.pasteでできるのですが、
大量に実行する場合、遅くて使い物にならず、困っています。
よろしくお願いします。
現状のコードを提示してください。
ありがとうございます。
Dim wb as Workbook
dim iMinHRow as long 'ペースト先の一番上の行、別途取得。
dim lRow as long 'ペースト先の一番下の行、別途取得。
Set wb = Workbooks.Open(ファイルパス)
Debug.Print "start " & Now
For m = 0 To UBound(strASub)
strA = Split(Replace(strASub(m),":", ""), "$")
iMinCol =AlphaToNum(strA(1))
iMaxCol =AlphaToNum(strA(3))
wb.Sheets("Sheet1").Range("$" & strA(1) & "$" & strA(2) & ":$" &
strA(3) & "$" & strA(4)).Copy
wb.Sheets("Sheet1").Range(strA(1) & iMinHRow & ":" & strA(3) &
lRow).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
wb.Sheets("Sheet1").Range("A1").Select
Next
Debug.Print "end " & Now
strASubという配列の中に
$C$2:$E$15
$F$2:$F$15
$G$2:$J$15
$K$2:$L$15
などと、複数の範囲が文字列で格納されているので、範囲ごとに書式コピペしているという動きです。
一部selectを外して改善されたのですが、これでも範囲により2秒かかることがあります。
コピペ対象のファイルが300くらいあることがあるので、なんとかならんかなと思っているところです。
AlphaToNumは自作の別関数ですが、ここは時間かかっていません。
質問は編集できますので、コードは質問に追記してください。その場合、コードはコードブロックにしてください。コード部分を選択して、ツールバーの <code>をクリックするとコードブロックになります。