Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: Excelのシートを別のBookにコピーしたいのですが



Permlink Replies: 4 - Last Post: Jul 18, 2016 4:02 AM Last Post By: Hideyuki Oya Threads: [ Previous | Next ]
Hideyuki Oya

Posts: 87
Registered: 6/6/07
Excelのシートを別のBookにコピーしたいのですが
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jul 17, 2016 12:24 AM
何度もすみません。
Delphi10とExcel2013を使っています。
Excelのあるシートを別Bookにコピーしたいのですが、どのように書いたらいいんでしょうか?
次のように書いてみたんですが、Copyのところでエラーが出ます。
(というか、Copyコマンドの書式がわからないです)
または、指定の行をすべての書式ごと(上付き文字、下付き文字、Symbolフォントが含まれていますので)別シートにコピーする書き方はどうするんでしょうか?

BookFilePath := 'F:\Test3.xlsx';
ExcelObj := CreateOleObject('Excel.Application');
WorkBook := ExcelObj.Workbooks.Open(BookFilePath);
WorkSheet := WorkBook.WorkSheets[1];

BookFilePath2 := 'F:\Test4.xlsx';
ExcelObj2 := CreateOleObject('Excel.Application');
WorkBook2 := ExcelObj2.Workbooks.Open(BookFilePath2);
WorkSheet2 := WorkBook2.WorkSheets[1];

WorkSheet.Copy(WorkBook.WorkSheets[1],WorkBook2.WorkSheets[1]);//エラー発生!

WorkBook.Close();
WorkBook2.Close();
//テスト用なので、保存とかはしていません。
igy kk

Posts: 147
Registered: 9/11/03
Re: Excelのシートを別のBookにコピーしたいのですが
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jul 17, 2016 5:43 AM   in response to: Hideyuki Oya in response to: Hideyuki Oya
Hideyuki Oya wrote:
Excelのあるシートを別Bookにコピーしたいのですが、どのように書いたらいいんでしょうか?
次のように書いてみたんですが、Copyのところでエラーが出ます。

WorkBook.WorkSheets[1].Copy(After:=WorkBook2.Worksheets[1]);

は、いかがですか?

または、指定の行をすべての書式ごと(上付き文字、下付き文字、Symbolフォントが含まれていますので)別シートにコピーする書き方はどうするんでしょうか?

WorkBook.Worksheets[1].Rows['17:17'].Copy(Destination:=WorkBook.Worksheets[2].Cells[3, 1]);

みたいな方法は、いかがですか?
Hideyuki Oya

Posts: 87
Registered: 6/6/07
Re: Excelのシートを別のBookにコピーしたいのですが
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jul 17, 2016 11:23 PM   in response to: igy kk in response to: igy kk
igy kkさん、いつもありがとうございます。
WorkBook.WorkSheets[1].Copy(After:=WorkBook2.Worksheets[1]);

は、いかがですか?
こちらの方はエラーが出て、だめみたいです。

WorkBook.Worksheets[1].Rows['17:17'].Copy(Destination:=WorkBook.Worksheets[2].Cells[3, 1]);

みたいな方法は、いかがですか?
こちらはうまくいくんですが、次のようにして他のBookのシートにコピーしようとすると「Rangeクラスのコピーメソッドが失敗しました」と表示されます。
Test2.xlsx、Test3.xslxともシート1はあります。

//--------------------------------------------------------------
BookFilePath := 'F:\Test2.xlsx';
BookFilePath2 := 'F:\Test3.xlsx';

ExcelObj := CreateOleObject('Excel.Application');
WorkBook := ExcelObj.Workbooks.Open(BookFilePath);

ExcelObj2 := CreateOleObject('Excel.Application');
WorkBook2 := ExcelObj2.Workbooks.Open(BookFilePath2);

ExcelObj.Visible := True;
ExcelObj2.Visible := True;

WorkBook.Worksheets[1].Rows['17:17'].Copy(Destination:=WorkBook2.Worksheets[1].Cells[3, 1]);//こう変えるとNGです。

また、
WorkBook2.Worksheets[1].Rows['17:17'].Copy(Destination:=WorkBook2.Worksheets[2].Cells[3, 1]);
こう変えた場合(WorkBook2のシート1、2間のコピー)はOKです。
別のBookのシート間ではコピーできないのでしょうか?

igy kk

Posts: 147
Registered: 9/11/03
Re: Excelのシートを別のBookにコピーしたいのですが
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jul 18, 2016 3:02 AM   in response to: Hideyuki Oya in response to: Hideyuki Oya
ExcelObj2 := CreateOleObject('Excel.Application');

を使わず、

WorkBook2 := ExcelObj2.Workbooks.Open(BookFilePath2);



WorkBook2 := ExcelObj.Workbooks.Open(BookFilePath2);

に書き換えたら、どうなりますか?
Hideyuki Oya

Posts: 87
Registered: 6/6/07
Re: Excelのシートを別のBookにコピーしたいのですが
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jul 18, 2016 4:02 AM   in response to: igy kk in response to: igy kk
igy kk wrote:
ExcelObj2 := CreateOleObject('Excel.Application');

を使わず、

WorkBook2 := ExcelObj2.Workbooks.Open(BookFilePath2);



WorkBook2 := ExcelObj.Workbooks.Open(BookFilePath2);

に書き換えたら、どうなりますか?

ありがとうございます。
うまくいきました。
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02