喫茶XRAYトップページ

[スレッド全体
]

[1995] Re2:エクセルからCSVへ保存返信 削除
2008/11/4 (火) 16:55:37 Kouji
▼ Mr.XRAYさん こんにちは、
早速のお返事をいただきましてありがとうございました。
何の説明もなく大変申し訳ありませんでした。

> ▼ koujiさん,こんにちは.
>
> >     wEditName := Copy(wPath, 1 ,   Length(wPath)-4);
> >     objBook.SaveAs (wEditName + '.csv'
> > //                 ,xlcsv
> >                  );
>
> xlcsvのところがコメントアウトになっていますが,xlcsvを指定しないと
> csvでは保存しません.Excelファイルで保存することになります.
> 開発環境(Windows,Delphi,Excelのバージョン)はどうなっていますか.

●開発環境は、

 WindowsXp(SP2),
 Delphi2005,
 Excel(自分のは、2003、納品するお客様は2007になります)

>
> 以下の環境で確認しました.
> Windows XP(SP2) + Delphi7 Pro + Excel2000
> Excelを非表示で実行(この方が高速)していますが,表示する必要がなければ
> M & IさんのXBiffを利用するとものすごく高速になりますよ.
>
> http://homepage3.nifty.com/m-and-i/tips/tipspage.htm#component
> http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s1661
>
> unit Unit1;
>
> interface
>
> uses
>   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
>   Dialogs, StdCtrls;
>
> type
>   TForm1 = class(TForm)
>     Button1: TButton;
>     OpenDialog1: TOpenDialog;
>     procedure Button1Click(Sender: TObject);
>   private
>     { Private 宣言 }
>   public
>     { Public 宣言 }
>   end;
>
> var
>   Form1: TForm1;
>
> implementation
>
> {$R *.dfm}
>
> uses ComObj,Excel2000;
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
>    objExcel  : OleVariant;
>    objBook   : OleVariant;
>    wPath     : String;
>    wEditName : String;
> begin
>     //Excelオブジェクト生成
>   objExcel := CreateOleObject('Excel.Application');
>   objExcel.Visible := False;
>   objExcel.DisplayAlerts := False;
>
>   OpenDialog1.InitialDir := ExtractFileDir(ParamStr(0));
>   try
>     if OpenDialog1.Execute then begin
>       //ExcelBook オープン
>       wPath := OpenDialog1.FileName;//  Trim(MltEdit1.Value);
>       try
>        objBook := objExcel.WorkBooks.Open(wPath);
>       except
>         on EOleSysError do begin
>           MessageBox(Handle,'指定されたファイルを開けません。','警告',MB_OK);
>           objExcel.Quit;
>           objExcel := unAssigned;
>           exit;
>         end;
>       end;
>
>       //拡張子を変更するだけならこれでOK
>       wEditName := ChangeFileExt(wPath,'.csv');
>       objBook.SaveAs (wEditName,xlcsv);
>     end;
>   finally
>     Screen.Cursor   := crDefault;
>     objExcel.Quit;
>     objExcel := unAssigned;
>   end;
> end;
>
> end.


●昨日より、この文章を見て一人でてんぱっておりました。
 MrXRAY様のご指摘通り、直したらCSVがすぐに出来ました。
 ありがとうございました。
 現在、プログラムにも問題はあると思いますが
 3分半くらい掛かってしまうため
 すぐにテストを行ってみます。
 本当にありがとうございました。

 また何かあったらご質問させて頂きたいと思いますので
 よろしくお願いいたします。

 Kouji


[1996] Re3:エクセルからCSVへ保存返信 削除
2008/11/4 (火) 17:13:21 Mr.XRAY
▼ Koujiさん

> ●開発環境は、
>
>  WindowsXp(SP2),
>  Delphi2005,
>  Excel(自分のは、2003、納品するお客様は2007になります)


この開発環境だと,Excel2007関係の情報は得られませんので,
usse にはExcelXPがいいかも知れません.
(もしあればExcel2003)

高速化にはXBiffもそうですが,エクセルクリエータを使用しても非常に
高速になります.ただし,有料で,実行ファイルと同じフォルダにDllが
必要です.XBiffの方は計測していませんが,エクセルクリエータでは,
ExcelのOLEObjectに比べて,ほぼ100倍近くの速度が得られます.

クライアントの要求がどんな仕様なのかはわかりませんが,変換の作業が
それほど必要なければ我慢していただくというのもひとつの考え方かも
しれませんね (^_^;)

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82