セルのコピー・貼り付け・クリア
直感的なメソッドでセルのコピー、貼り付け、クリアを行えます。
Cell(Pos).Copyメソッド
セルをコピーします。 またはコピー・ペーストします。書式1 Cell(range).Copy()
書式2 Cell(range).Copy(ByVal strCell As String)
range : コピーするセル範囲
strCell : コピー先のセル strCellを省略した場合は メモリ上にコピーされ、Pasteメソッドで貼り付け可能。
※注意 (ヘルプより)
1.コピー元セルのセル属性と値のみコピーする。
2.Copy メソッドの Cell クラスに変数名を設定した場合は対応していない <-- 残念...
3.Excel ファイルのブック間、シート間のコピー・貼り付けには対応していない <-- 残念...
注意の2と3、残念ですね。これが出来れば結構いいのにな。
Cell(Pos).Pasteメソッド
Copy メソッドでコピーしたセルを貼り付けます。書式 Cell(range).Paste()
range : コピーするセル範囲
サンプルプログラム1
単純にコピー、貼り付けを行っています。
サンプルソースを示します。
Dim xlsCr As New ExcelCreator.XlsCreator
'ファイルオープン
xlsCr.OpenBook("CopyPasteSample.xls", "")
'セルB2:E4をセルB6にコピー
xlsCr.Cell("B2:E4").Copy("B6")
xlsCr.Cell("A6").Str = "Cell.Copy結果 →"
'セルB6:E8をセルB10にコピー
xlsCr.Pos(1, 5, 5, 7).Copy()
xlsCr.Pos(1, 9).Paste()
xlsCr.Pos(0, 9).Str = "Pos.Copy結果 →"
'-------------------------------------
'クローズ
'-------------------------------------
xlsCr.CloseBook(True)
xlsCr.Dispose()
<実行結果>
実行前

実行後

サンプルプログラム2 (コピー・ペースト後に、さらにペーストだけ行えるか?)
では次に、コピー・ペースト(こんな奴:xlsCr.Cell("B2:E4").Copy("B6"))後に、Pasteメソッドだけ実行出来るかを実験します。
メモリに残っていると思うので出来そうなんですが、ヘルプを見てもそのような記述が特に無かったので実験します。
サンプルソースを示します。
Dim xlsCr As New ExcelCreator.XlsCreator
'ファイルオープン
xlsCr.OpenBook("CopyPasteSample.xls", "")
xlsCr.SheetNo = 1
'コピー・ペーストした後に連続してペースト出来るか?
xlsCr.Cell("B1").Copy("B3")
xlsCr.Cell("B5").Paste()
'-------------------------------------
'クローズ
'-------------------------------------
xlsCr.CloseBook(True)
xlsCr.Dispose()
<実行結果>

ちゃんと出来ました...
サンプルプログラム3 (大量セルのコピー・ペースト)
範囲A1:C65536を、E1にコピーしてレスポンスはどうかと実験しました。
結果から言うと、コピーペーストは速度的に問題ないと思われますが、保存に時間が掛かりました。
保存速度についてはあらためて別の機会で実験しますが、とりあえずサンプルを上げておきます。

ファイル保存で(自分の環境では)、1分40秒ほど掛かっています....
サンプルソースを示します。
Dim xlsCr As New ExcelCreator.XlsCreator
'Stopwatchオブジェクトを作成する
Dim sw As New System.Diagnostics.Stopwatch()
'ストップウォッチを開始する
sw.Start()
'ファイルオープン
xlsCr.OpenBook("CopyPasteSample.xls", "")
xlsCr.SheetNo = 2
sw.Stop()
'結果を表示する
Console.WriteLine("ファイルオープン完了: " & sw.Elapsed.ToString)
'大量セルのコピー
sw.Reset()
sw.Start()
xlsCr.Cell("A1:C65536").Copy("E1")
'ストップウォッチを止める
sw.Stop()
'結果を表示する
Console.WriteLine("コピー・ペースト完了: " & sw.Elapsed.ToString)
'-------------------------------------
'クローズ
'-------------------------------------
sw.Reset()
sw.Start()
xlsCr.CloseBook(True)
'ストップウォッチを止める
sw.Stop()
'結果を表示する
Console.WriteLine("ファイル保存完了: " & sw.Elapsed.ToString)
xlsCr.Dispose()
履歴
- 2013/04/08
- リンク追加
- 2012/02/23
- 公開
