タイトル | : Re^2: エクセル間でで値だけのコピー |
記事No | : 6710 |
投稿日 | : 2007/12/24(Mon) 10:41 |
投稿者 | : K |
花ちゃん様、ご返答ありがとうございます。 色々と情報不足があり、申し訳ありません > なぜ、DataGrid に取り込む必要があるのですか? 一旦データをDataGrid上に表示して、ユーザが必要に応じてエクセルファイルに DataGrid上のデータを書き出すとう処理を行っています。 > どのようなコードを書いておられて、実際のデータの個数は? > 3000件=3000行 としても何列かによっても違うしデータの種類にもよるだろうし > 通常は1時間以上かかる事はないと思うのですが。 1レコードに34列のデータがあり、文字列型・数値型・金額型・日付型と複数の形式が 混ざっています。 きちんと時間を計ったわけではないのですが、エクセルファイルに1レコード書き終わった 時に、書き始めからの経過時間と書き込んだレコード数から1レコードあたりの平均時間を 出し、残りのレコード数からあとどれくらい時間がかかるか表示をしていました。 その時に、1時間以上かかるとわかったのです。
> CSVファイルに書き出すくらいなら、Excelファイル上に書き出した方が早い気がしますが。 今のところ、CSVファイルに書き出しCSVファイルをエクセルで開き範囲指定してコピーした 方が、断然早く処理ができています。
> > 2つのエクセルファイル間で、値のみのコピーはできないものなんでしょうか? > プログラムに関係なく Excel を手動で扱って貴方の言う 値のみのコピー はできますか? エクセルでは、貼り付けをする時にマウスの右クリックで「形式を選択して貼り付け」を 選択し、「値」を選択すると値だけのコピーができますよね?
> CSV ファイルに書き出して使うのならCSVファイルに式の部分も書くようにしないと。 'DatGridからCSVファイルへデータを書き込み For Row_Num = 0 To dTbl.DefaultView.Count - 1 WriteLine = "" For Clm_num = 0 To 33 Select Case Clm_num Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 17, 18, 20, 22, 24, 26, 28, 30, 32, 33 WriteLine = WriteLine & "=" & Chr(34) & DataGridEx1.Item(Row_Num, Clm_num) & Chr(34) & "," Case 12, 14, 15, 16, 19, 21, 23, 25, 27, 29, 31 WriteLine = WriteLine & Chr(34) & DataGridEx1.Item(Row_Num, Clm_num) & Chr(34) & "," End Select Next swFile.WriteLine(WriteLine) Next CSVファイルへの書き出し部分です。色々とサイトを参考にし文字列は="文字列"とし その他は"値"という形でCSVファイルに書き込んでいます。 もう一度、花ちゃん様のご意見を参考にして挑戦してみます。
|