2012-03-07 62 views
0

TCLからCSVファイルにデータを書き込もうとしていますが、実行時に0x800a03ec {WorkbookクラスのSaveAsメソッド}が発生します。なぜこれが起こっているのか?0x800a03ec {WorkAsクラスのSaveAsメソッドが失敗しました} TCOM/TCLのエラー

set application [::tcom::ref createobject "Excel.Application"] 
$application Visible 1 

set workbooks [$application Workbooks] 
set workbook [$workbooks Add] 
set worksheets [$workbook Worksheets] 
set worksheet [$worksheets Item [expr 1]] 
#set worksheet [$worksheets Item "Sheet1"] 
set cells [$worksheet Cells] 

set rows [array size atten] 
for {set row 1} {$row <= $rows} {incr row} { 
    $cells Item $row "B" $atten($row) 
} 

$workbook SaveAs Filename {c:\tst.csv} 
$application Quit 

答えて

0

問題は、SaveAs行にあります。読み込む必要があります

$workbook SaveAs {c:\tst.csv} 

また、書き込み可能な場所ではないため、場所をC:\から変更することもできます。

+0

別のフォルダに保存しようとしましたが、<= to <が変更されましたが、同じエラーが表示されます – amateur

+0

SaveAsの行を変更しましたか?私はあなたのエラーを再現し、その行を変更して修正できました。 – TrojanName

1

実際にはplain googling for thisは、可能な原因と解決策がたくさんあります(出力フォーマットを行制限に当てて、文字列の長さ制限などに手動で設定することから)。もっとも間違いなく、この例外はTclとは関係がありません(ExcelのインスタンスからCOMマーシャリングが行われただけなので)。検索結果からリンクされたディスカッションを読み、あなたのケースに該当するものを見てください。

+0

データをCSV形式で書き込むことができます。しかし、データはすべて壊れています。たとえば、メモ帳でデータを開いたときにデータが破損していると、データがコンマで区切られていないことがわかります。私はCSV形式にデータを書き込むために使用するメソッドに問題がありますか? – amateur

+0

はい、@amateur:エクステンションからファイル形式を推測しません。代わりに、2つ目の引数として、[SaveAs]に2引数の呼び出しを使用し、目的の[形式コード](http://msdn.microsoft.com/en-us/library/ff198017.aspx)を渡す必要がありますあなたのケース)、 'SaveAs'を正しく呼び出す方法は、[this](http://msdn.microsoft.com/en-us/library/h1e33e36.aspx)を参照してください。 – kostix

+1

CSVファイルを生成するためだけにExcelを使用している場合は、これはTcllibの 'csv'パッケージを使用するのと比べて非常に悪い考えです - パフォーマンス上およびポータビリティ上の両方で、異なるWindowsマシンにまたがって)、メンテナンスに賢明です。仕事にもっと賢明なツール( 'csv'と' struct :: matrix'パッケージ)を使う方法を学ぶことに時間を費やすことをお勧めします。 – kostix

関連する問題