私は、COMインターフェイスを使用して基本的なExcelオートメーションを使っていました。主にIDispatch::Invoke
を利用しています。Excelオートメーションでローカライズされていない式を使用する
私のテストでは、新しく作成されたExcelドキュメントに式を追加しました。考案されたラッパーライブラリを使用すると、それは次のようになります。
sheet.getObject("Range", "A1").set("Value", 23);
sheet.getObject("Range", "A2").set("Value", 42);
sheet.getObject("Range", "A3").set("Formula", "=SUMME(A1:A2)"); // WTF?
お知らせ:私の代わりに予想通りの識別子SUM
の、ここでは(ドイツ語)ローカライズされた式の名前SUMME
を使用しています。 Excelでマクロレコーダーと同じ処理を行う場合、生成されるVBAコードにはSUM
が含まれています。私のC++コードでSUM
を使用すると、Excelに#NAME?
というエラーが発生します。
Microsoftのdocumentation for the Range.FormulaLocal
Propertyは、次の言葉:
返すか、ユーザーの言語でA1スタイルの参照 を使用して、オブジェクトの数式を設定します。
(強調は私によってなされた)。
FormulaLocal
の代わりにFormula
を使用すると、これらのローカライズの苦境を乗り越えることができましたが、明らかにこれは当てはまりません。
ローカライズされていない式を使用する方法はありますか?私はいくつかのよく隠された設定があると思います。私が見つけたものを文書化するために答えを追加
はい、それは私のために働く。私はスペイン語でExcelを使用しており、プロパティの式には英語の名前が割り当てられています。隠された設定はありませんが、それは以前のExcelバージョン(12より前、かなり古いもの)で動作しなかったことを覚えています。 –
@ CarlosE.Ferro "12"はOffice 12をOffice 2007ともいうのですか?私はここでExcel 2010を使用しています。 – mkluwe
はい、私はそれはかなり古いと言いました。 Excel 2007は機能しているので、なぜそれがあなたのもので動作しないのかわかりません。申し訳ありません:-( –