Excelの指定sheet(Index>1)に、Csvfileを書込み方法


Hiisan  2020-10-06 20:49:21  No: 149232

コンポネント[Server]のExcelApp,ExcelWookbook,ExcelSheetを、使用してworkbookに[Sheet1][sheet2[[sheet3]があり例えば[sheet2]にCsvファイルを書込
方法が、分かりません。Sheet1の場合は、EXCELBook登録時にcsvファイルを指定すれば可能です。
window10,Delphi10.3 community Edition 、excel2000
なお XRAY様の410_TExcelApplication によるエクセル操作を参考には、しています
宜しくご指導願います。


igy  2020-10-06 23:19:24  No: 149233

試していませんが、

> Sheet1の場合は、EXCELBook登録時にcsvファイルを指定
この方法で、開いたファイルのSheet1を
>workbookに[Sheet1][sheet2[[sheet3]があり
このWorkbookのSheet1の次に、コピーするのは、いかがですか?

Book1.WorkSheets[1].Copy(After:=Book2.Worksheets[1]);
みたいな感じでできそうな気がしますが。


Hiisan  2020-10-07 07:07:48  No: 149234

igyさま、有難う御座います。
当方のやりたい事は、最終的には、各シートに[*.Csv]を、書込み[*.Xls]に変換して、各シートの[*.xls]を、合成して、単体の[*.Xls」にしたいのです。
言葉足らずでした。


igy  2020-10-08 23:09:07  No: 149246

最初に書いた、
Book1 にCSVファイルを読み込み、
Book2 に書き込み用のxlsファイルを読み込み、
Book1.WorkSheets[1].Copy(After:=Book2.Worksheets[1]);
で、Book1の(CSVファイルが読み込まれた)シートを、Book2のシート1の次に追加する
方法を提示したのですが、それでは、ダメということですか?


Hiisan  2020-10-09 20:24:20  No: 149249

igyさま、遅くなり申し訳ございません。
動作は、しましたが、読込速度が、遅いのとClose動作のoptionの設定が、解りません。(SaveChange,filename,Routeworkbook)

var
  Dst,Src:variant;
begin
    Src:=ExcelApp.Workbooks[2].worksheets[1];  //ExcelAppが、必要でした
  Dst:=ExcelApp.Workbooks[1].workSheets[1];
  Src.copy(after:=Dst);
  Src.Close;<---error
end;
以上 Close用法を、お教え願います


igy  2020-10-09 20:40:32  No: 149250

> Close動作のoptionの設定が、解りません。
試していませんが、
Src.Close(SaveChanges:=False);
は、いかがですか?


igy  2020-10-10 19:34:17  No: 149255

あと、QueryTables.Add 関数を使うとExcel の「外部データの取り込み」同様に、CSVファイルがシートに取り込めますね。
この方法だと、シートコピーとかせずに、希望するシートに簡単に取り込めるようです。

VBA CSV ファイルの読み込み (QueryTables.Add 関数を使う)
https://www.tipsfound.com/vba/18014


Hiisan  2020-10-10 20:49:54  No: 149256

igyさま、アドバイス大変有難うございます。
Closeも動作し、保存を、検討している処です。(saveAs)excel2000ですから、xlExcel8で良いと思いますが、エラーになります。
xlworkbooknormalであれば、エラーは、でないのですが、保存不可の状態です。
保存できれば、終了となります。
その後、処理速度とQueryTables.Add も、検討してみます。


igy  2020-10-10 21:49:42  No: 149257

> xlExcel8で良いと思いますが、エラーになります。
FileFormat:=56
としてみたら、どうなりますか?


Hiisan  2020-10-10 21:57:41  No: 149258

自己レスです
ファイルの保存できないObject.SaveAsのfilenameとfileformatについて
[1]filenameにfolder名を、不可すると、だめでファイル名のみ(FullPath:X)
[2]fileformat:xlexcel8だと、だめでxlExcel8の値56にする:fileformat:variantに設定)
[1][2]の変更でSaveAsが、動作しました。


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








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