2012-04-06 10 views
0

コマンド$ cells項目2 A {SomeText}はセルA1のテキストを代入する代わりに、セルA2のテキストを設定しません。なぜこのようなその行動に任意のアイデア???TCOMを使用してExcelでセルを指定

   set application [::tcom::ref createobject "Excel.Application"] 
       set XlFileFormat(xlCSV) [expr 6] 
       set workbooks [$application Workbooks] 
       set workbook [$workbooks Add] 
       $application DisplayAlerts False 
       set worksheets [$workbook Worksheets] 
       set worksheet [$worksheets Item [expr 1]] 
       set cells [$worksheet Cells] 
      $cells Item 2 A {Range} 


       $workbook SaveAs {c:\test.csv} $XlFileFormat(xlCSV)  
       $application Quit 
+0

異なる番号を使用するとどうなりますか? "4 A"? – Marc

+0

それはちょうどA1セルのすべてを配置します..それは私が推測するCSV形式のためです...なぜこれが不思議な振る舞いをしているのかわかりません... – user1270123

+0

この例では、ファイルがどのように保存されているのか分かりません。 2行目は配列のメンバを整数6に設定するだけです。それだけです。一方、ブックを追加した後、シートを追加してから変更します。 CSVが単なる行列であり、ワークシートやワークブックについては何も知らないので、あなたが移入したものを保存するように指示するとき、Excelが何かを保存しているという曖昧な感情があります。 – kostix

答えて

1

さて、ここでの説明があります:CSVに保存するとき、Excelが(仮想化)シートグリッド内の「バウンディングボックス」を形成だけでデータを保存しているようです。つまり、最初の行のセルのデータは変更されていないため、保存されません。

この単純なプログラム(WSH用のJScript):

var app = new ActiveXObject("Excel.Application"); 
var wbs = app.Workbooks; 
var wb = wbs.Add; 
var wss = wb.Worksheets; 
var ws = wss.Item(1); 
var cells = ws.Cells; 

app.DisplayAlerts = false; 

cells.Item(2, "B") = "B2"; 
cells.Item(2, "C") = "C2"; 
cells.Item(3, "B") = "B3"; 
cells.Item(3, "C") = "C3"; 

wb.SaveAs("foo.csv", 6); 
app.Quit(); 

シートの左上隅からの1つの列と1行分のオフセット矩形ブロック内に配置された4つのセルを設定し、このCSVファイルを生成:

B2,C2 
B3,C3 
関連する問題