シート内の全てのCellをコピーし、別のシートへペースト


【概要】
コピーしたセルを貼り付けるには、RangeオブジェクトのメソッドPasteSpecialを使います。

[メソッド]
   PasteSpecial ( 
     enum XlPasteType Paste,  
     enum XlPasteSpecialOperation Operation, 
     const _variant_t & SkipBlanks,        //省略可能
     const _variant_t & Transpose                 //省略可能
   )

[引数]
    ・XlPasteType

    typedef enum {
        xlPasteAll = -4104,
        xlPasteAllExceptBorders = 7,
        xlPasteFormats = -4122,
        xlPasteFormulas = -4123,
        xlPasteComments = -4144,
        xlPasteValues = -4163,
        xlPasteColumnWidths = 8,
        xlPasteValidation = 6,
        xlPasteFormulasAndNumberFormats = 11,
        xlPasteValuesAndNumberFormats = 12
    } XlPasteType;

    ・XlPasteSpecialOperation 

    typedef enum {
        xlPasteSpecialOperationAdd = 2,
        xlPasteSpecialOperationDivide = 5,
        xlPasteSpecialOperationMultiply = 4,
        xlPasteSpecialOperationNone = -4142,
        xlPasteSpecialOperationSubtract = 3
    } XlPasteSpecialOperation;


【サンプル】
//Excelを操作するためのタイプライブラリを読みこむ(Excel2002用)
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" no_namespace rename("DocumentProperties", "DocumentPropertiesXL")   
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb" no_namespace   
#import "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces

//実行用コード
void CShtcellcopyDlg::OnButton1() 
{
	int i;
	char buffer[9];
	COleVariant data,data1;
	using namespace Excel;
	_ApplicationPtr pXL;

 	//Excelの起動
	pXL.CreateInstance(L"Excel.Application");
	pXL->Visible = TRUE;

	//WorkBookを追加する
	WorkbooksPtr pBooks = pXL->Workbooks;
	_WorkbookPtr pBook  = pBooks->Add((long)xlWorkbook);

	//アクティブ・シートを取得
	_WorksheetPtr pSheet = pXL->ActiveSheet;

	//Cellsを使用したデータの出力
	for(i = 1; i < 10; i++){
		data = (short)i;
		data1 = (short)1;
		RangePtr pCells = pSheet->Cells->Item[data][data1];
		itoa(i,buffer,10);
		pCells->Value2 = buffer;
	}

	//Worksheetを追加する
	pBook->Worksheets->Add();

	//シート内のCellをクリップ・ボードへコピー
	pSheet->Cells->Copy();

	//アクティブ・シートを移動
	data = (short)1;
	pSheet = pBook->Worksheets->Item[data];
	pSheet->Select();

	//クリップ・ボードへコピーしたデータを貼り付ける 
	RangePtr pRange = pSheet->Cells;
	pRange->PasteSpecial(xlPasteAll, xlPasteSpecialOperationNone);

	AfxMessageBox("動作確認のために一時停止");

	pXL->DisplayAlerts = FALSE;
	pXL->Quit();
		
}