tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: エクセル間でで値だけのコピー
投稿日: 2007/12/24(Mon) 10:41
投稿者
花ちゃん様、ご返答ありがとうございます。
色々と情報不足があり、申し訳ありません
> なぜ、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ファイルに書き込んでいます。

もう一度、花ちゃん様のご意見を参考にして挑戦してみます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。