ワークシートのコピーはどれが一番早いか

2017–09–01 (Fri) 13:28
マクロでワークシートのコピーはどれが一番早いか気になったので比べてみました。

サブプロシージャを使用する方法
Dim sn As String
Dim i As Long
Dim aWs As worksheet
Option Explicit
Sub WsCopyP(ByVal after As worksheet)
Dim NewSheet As worksheet
Set NewSheet = ActiveWorkbook.Worksheets.Add(after:=after)
NewSheet.Activate
ActiveSheet.Paste
ActiveSheet.Name = sn & "(" & i & ")"
End Sub

Sub サブプロシージャ()
maisu = Application.InputBox(Prompt:="枚数を入力してください", Type:=1)
Dim sss As Single
sss = Timer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual

Set aWs = ActiveWorkbook.ActiveSheet
aWs.Cells.Select
Selection.Copy

sn = ActiveSheet.Name
For i = 1 To maisu
Call WsCopyP(after:=Worksheets(Worksheets.Count))
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
MsgBox Round(Timer - sss, 2)
End Sub


Sub 単純にワークシートのコピーを繰り返す()
maisu = Application.InputBox(Prompt:="枚数を入力してください", Type:=1)
Dim sss As Single
sss = Timer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim sheet As worksheet
Set sheet = ActiveSheet
For i = 1 To maisu
sheet.Copy after:=sheet
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
MsgBox Round(Timer - sss, 2)
End Sub


Sub シートを作成して貼り付ける()
maisu = Application.InputBox(Prompt:="枚数を入力してください", Type:=1)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Dim sheet As worksheet
Set sheet = ActiveSheet
sheet.Cells.Copy
For i = 1 To maisu
Worksheets.Add after:=Worksheets(ActiveSheet.Name)
ActiveSheet.Name = sheet.Name & "(" & i & ")"
Worksheets(sheet.Name & "(" & i & ")").Paste
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub

3つを単純に比較(ワークシートを50枚コピーし、その時間を比較する)
シートを作成してから貼り付けるものが一番早い事が判明した。
シートをコピーして追加するものは早そうに感じたが意外と遅かった。
ただ、枚程度のコピーなら、そこまで遅くは感じない。
サブプロシージャを使用するものは思ったほど早くは無かった……。


比較画像
無題4
スポンサーサイト

« CSVいろいろ | HOME |  配列とコレクションを使う »

コメント

コメントの投稿

 
管理者にだけ表示

 | HOME | 

プロフィール

あゆみ

Author:あゆみ
FC2ブログへようこそ!

最新記事

最新コメント

フリーエリア

月別アーカイブ

カテゴリ

ブロとも申請フォーム

検索フォーム

RSSリンクの表示

リンク