セルのコピー・貼り付け・クリア
直感的なメソッドでセルのコピー、貼り付け、クリアを行えます。
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
- 公開