- - PR -
配列のデータをEXCELにペーストする
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-17 17:42
お疲れ様です。
るぱんです。 VBScriptで簡易的に組んでみましたが、成功しています。 *お試し版です。*
以下はおそらく正解になるだろうと思われるScript *模範解答版*
| ||||||||
|
投稿日時: 2003-12-17 18:18
あのう...ゴミレスですけど、これでは配列にした意味は無いのではないでしょうか?
> For n = 1 To 21 > obj.ActiveSheet.Cells(n,1) = CDate(dHIZUKE(n)) > obj.ActiveSheet.Cells(n,1) = CLng(NODO(n)) > 'エクセルがデータベースではない場合 > '以下のようになると思います。 > 'obj.ActiveSheet.Cells(n,1).Value = CDate(rs.Fields(0).Value) > 'obj.ActiveSheet.Cells(n,2).Value = CLng(rs.Fields(1).Value) > Next n EXCELに配列で貼り付けるというのは、 ActiveSheet.Range("A1:D30")=Hairetsu ActiveSheet.Range("A1")=Hairetsu With ActiveSheet .Range(.Cells(1,1),.Cells(8,100))=Hairetsu End With のような形で2次元の配列をRangeに一発で貼り付けるようにするのでは? このとき、配列の1次元目と2次元目がEXCELでは行、列になるのでそれを 意識して配列データを作らないと、列方向にデータが貼りついたりしてしまい ます。 数値に関しては代入する際に0を引くとか(Scriptでやるように)で無理やり数値認識 させて代入してもだめでしょうか? [ メッセージ編集済み 編集者: Beatle 編集日時 2003-12-17 18:20 ] | ||||||||
|
投稿日時: 2003-12-17 18:19
お疲れ様です。
るぱんです。 先程はよく読まずに返信してしまいました。 ごめんなさい。 Excelに対してADO接続か何か仕掛けてるのかな?
なのですね。 でしたら、ExcelでTemplateファイルを作り、その中にマクロを仕込んでおいて、 @ExcelTemplate AASPで作成したExcelファイル BActiveSheetに対してExcelTemplateのマクロ実行 CASPで作成したExcelファイルをセーブ D使ったファイル、変数を全てを破棄 でやる方が効率良いですね。 参考にしてみてください。 | ||||||||
|
投稿日時: 2003-12-17 23:40
貼り付ける配列の中に、DbNullなデータがないですか?
KBを参考にして、EXCELをデータベースに見立ててデータのやりとりをやったのですが、EXCELって「データベース」ではないので「列の型」が指定できないじゃないですか。で、複数の型があった場合、つまり、数値と空白セルがあった場合、多い方の型が採用される、という現象がありました。 え〜と、列Aに、「1」「」「3」「」「5」と入っていたとします。これだと「数値」である行と、「」(ヌル=文字列)である行があるため、数を数えると3:2で数値行の方が多い。従って列Aは「数値」として取得、設定できる。 ところが、列Bは「」「2」「」「4」「」と入っていました。これだと2:3で「文字列」の方が多い。従って、列Bは「文字列」として取得、設定できる。 参考まで。 | ||||||||
|
投稿日時: 2003-12-18 08:53
harucaさんこんにちは。
xlSheet.Columns("A:A").NumberFormatLocal ="yyyy/mm/dd" とか追加してみてはどうでしょうか?(試していませんが...) | ||||||||
|
投稿日時: 2003-12-18 11:07
ちょっとついていけていない状況ですが、皆様のアドバイスをもとに頑張ってみます。
本当にありがとうございます! (ちなみに配列に複数の型があった場合、多いほうの型が採用されるという事ですが、数値のみの配列データ(Null無し)をその個数分のセル範囲に書き込んでみたところ、やはり '(シングルクオーテーション)がついてきてしまいました。) | ||||||||
|
投稿日時: 2003-12-19 01:07
この現象ですが、Excel2002では発生しないと思います。
Excel2000の場合、以下の処理をVBAで作成して誤魔化しています。 (1)左寄せになった部分を選択 (2)コピー (3)”形式を選択して貼り付け”で、演算の項目の”加算”を選択 何も書かれていないセルに加算して貼り付けると、 貼り付けられた数字は右寄せになり、数字として認識されます。 | ||||||||
|
投稿日時: 2003-12-19 10:39
おはようございます。
るぱんです。 Excel2000 SR-1で動作確認済です。 >グータラ犬様 NumberFormatLocalではなく・・・? データの加工は全自動でやると言う前提がおかしいのかな・・・? 全自動・・・なんか、食器洗い洗濯機見たいですね。(自爆) |