Excelの特定のセルを他の場所にコピーしたい


金魚  2005-08-01 22:02:11  No: 16756

Delphi4.ProでExcel2002を起動し特定のセルのフォント情報や、罫線/色等の全ての情報を他の場所にコピーしたいのですが、よく分かりません。
何方か教えて下さい。
OSはXPです。
uses  Comobj;

procedure TForm1.PrintClick(Sender: TObject);
var
  E_Excel       : Variant;
  E_Application : Variant;
  E_WorkBook    : Variant;
  E_WorkSheet   : Variant;
begin
// Excel をオープン
  try
  E_Excel               := CreateOleObject('Excel.Application');
  E_Application         := E_Excel.Application;
  except
      on EOleSysError do begin
         //起動失敗
         ShowMessage('Excelが起動できません');
         E_Excel := Null;
         Exit;
      end;
  end;
  E_Application.Visible := True;
  E_Application.WorkBooks.Open('C:\A_C\MyData.xls'); //xlsファイルを指定
  E_WorkBook            := E_Application.ActiveWorkbook;
  E_WorkSheet           := E_Application.ActiveSheet;

// ここでセルH12からI13の情報をセルA10からB11にコピーする
     //ここの処理を教えて下さい

// データをファイルに書き込む
      E_WorkSheet.Cells(11,2).Value := '1234';  //セルB11にデータセット

  // WorkBookの内容を保存してExcelを終了する
  E_WorkBook.Saved := FALSE;
  E_Application.WorkBooks.Close;
  E_Excel.Quit;
  E_Excel     := unAssigned;
  E_WorkBook  := Unassigned;                           //変数のクリア
  E_WorkSheet := Unassigned;                         //変数のクリア

end;


HOta  2005-08-01 22:16:34  No: 16757

ここまでできているのに、何かエラーでも出ているのですか?

そのまんまです。
E_WorkSheet.Cells(11,2).Value := 
  E_WorkSheet.Cells(10,1).Value;


情報単位なら  2005-08-01 22:58:30  No: 16758

//セルH12からI13の範囲を 情報別に セルA10からB11に一括コピー
  E_Application.Range['H12', 'I13'].Value := E_Application.Range['A10', 'B11'].Value;
  E_Application.Range['H12', 'I13'].Font.Color := E_Application.Range['A10', 'B11'].Font.Color;


およよ  2005-08-01 23:18:32  No: 16759

↑弘法も木から落ちる...サルも筆のあやまり
>//セルH12からI13の範囲を 情報別に セルA10からB11に一括コピー
  E_App.Range['A10', 'B11'].Value := E_App.Range['H12', 'I13'].Value;
  E_App.Range['A10', 'B11'].Font.Color := E_App.Range['H12', 'I13'].Font.Color;


金魚  2005-08-01 23:29:08  No: 16760

HOtaさん、情報単位ならさん、有難うございます。
コピーしたい情報は、文字だけでなく、セルのサイズや色、罫線の情報、セル接合等の指定した範囲の全ての情報を、処理したいのですが。
せめて罫線や文字サイズだけでも、コピーできないでしょうか?


お世話になりますクリップボードさん  2005-08-02 00:09:30  No: 16761

// セル情報をクリップボード経由で一括コピー
  E_Application.Range['H12', 'I13'].Copy;
  E_Application.Range['A10'].PasteSpecial;


金魚  2005-08-02 02:01:55  No: 16762

お世話になりますクリップボードさん、有難うございます。
一発でコピーできました。
ちなみに、セルの高さや、幅はどの様に設定するのですか?
何方か教えて下さい。


夏祭りには金魚すくい  2005-08-02 18:45:21  No: 16763

// 行の高さ、列の幅
  E_Application.Rows[10].RowHeight := 20;
  E_Application.Columns[2].ColumnWidth := 10;
  // 範囲指定で幅,、高さセット
  E_Application.Range['A10','A16'].RowHeight := 12.3;
  E_Application.Range['B1','G1'].ColumnWidth := 15;


金魚  2005-08-02 23:26:55  No: 16764

夏祭りには金魚すくいさん、有難う御座いました。
お世話になりますクリップボードさん、Excelを終了するときクリップボードにデータが残っているとメッセージが出るのですが、クリップボードのクリアの方法はあるのですか?教えて下さい。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加