• 締切済み

VC++6.0 オートメーションでExcelに書き込めない文字列が存在する?

こんにちは。 VC++6.0 を使用したオートメーション処理にて、 Excelファイルのセルに文字列を書き込む処理を 行っています。 しかし、ある特定の文字列※を書き込んだ際に、 Runtime Errorが表示され、プログラムが強制終了 してしまいました。 エラーが発生したのは、Rangeオブジェクトのvalue2プロパティです。 このプロパティに、特定の文字列を入力すると、エラーが発生するようなのです。 対処として、その特定文字列を書き込む直前に、 Excelのセルの書式設定のうち、「表示形式」を「標準」→「文字列」にしたところ、問題なく書き込めました。 質問 1.Excelの「表示形式」の「標準」と「文字列」は、具体的にどのような違いがあるのでしょうか。 2.なぜ書き込めないのでしょうか。仕様なのでしょうか。 その辺りのヘルプがないので、ヘルプの場所をご存知の方がおられましたら、ご教授願います。 ※特定文字列とは、JISコード以外の文字列です。 実際には、文字化けしていると思われます。 環境:Windows XP SP2 Excel2002, 2003

みんなの回答

回答No.3

EXCELの標準と、文字列の違いは、、 標準だと、数式、数値、日付等のデータと EXCELが理解すれば、それぞれその対応を EXCELが勝手に行います。 文字列だと、そのままです。

kerberos_001
質問者

お礼

ご回答ありがとうございます。 わかりました、ありがとうございます。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>VC++のアプリ側で発生します。 で、#importを使っているということなので、実際のCOMインターフェイスをラップしたメソッド、プロパティ等が作られているはずです。 プロパティに値を書き込む(ラッピングされたものではなく本物のgetメソッドを呼ぶ)前か、後のどちらで発生しているかを調べてください。 ステップ実行していけば、ラッピングした中まで入っていけますんで。 あとは想像ですが、エラーが起こってるのはプロパティにアクセスする前で、 ANSI→UNICODEに変換が行われている所で不正な文字コードの文字列のせいで NULLかなんかが返ってるのにそのまま処理しててすっ飛んでる といったところではないでしょうかね?

kerberos_001
質問者

お礼

ご回答ありがとうございます。 ふむふむ・・・もう少し調べてみます。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

Runtime Errorってどこで出てるんですか? Excelの中ですか?VC++のアプリ側ですか? それによって対応方法がぜんぜん違いますが。 で、 >VC++6.0 を使用したオートメーション処理にて、 MFCですか?#importでタイプライブラリを取り込んでるんですか?

kerberos_001
質問者

補足

補足させて頂きます。 > Runtime Errorってどこで出てるんですか? > Excelの中ですか?VC++のアプリ側ですか? VC++のアプリ側で発生します。 アプリケーションを実行すると、Runtimeエラーですが、 デバッガにて実行すると、KERNEL32.DLLの例外となります。 > MFCですか?#importでタイプライブラリを取り込んでるんですか? プログラム自体は、MFCを使用していますが タイプライブラりに関しては、 #importで取り込んでいます。 (ClassWizardを使用したタイプライブラリからExcel操作用クラス取り込みではありません) 参考にしたサイト http://www.attain-sys.com/vc/vc.html よろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A