Ich habe mit grundlegender Excel Automatisierung mit der COM-Schnittstelle herum spielen, vor allem IDispatch::Invoke
nutzen.Die Verwendung von nicht lokalisierten Formeln in Excel Automatisierung
beteiligt Mein Test eine Formel in einem frisch erstellten Excel-Dokument hinzufügen. eine erdacht Wrapper-Bibliothek verwenden, sieht es wie folgt aus:
sheet.getObject("Range", "A1").set("Value", 23);
sheet.getObject("Range", "A2").set("Value", 42);
sheet.getObject("Range", "A3").set("Formula", "=SUMME(A1:A2)"); // WTF?
Hinweis: Ich bin mit dem (Deutsch) lokalisierte Formel Name SUMME
hier anstelle der Kennung SUM
wie erwartet. Wenn Sie das gleiche mit dem Makrorecorder in Excel tun, enthält der generierte VBA-Code SUM
. Unter Verwendung von SUM
in meinem C++ - Code habe ich einen Fehler #NAME?
in Excel.
Microsofts documentation for the Range.FormulaLocal
Property sagt der folgende:
Ermittelt oder legt die Formel für das Objekt, unter Verwendung der A1-Referenzen in der Sprache des Benutzers.
(Schwerpunkt wurde von mir gemacht). So
Ich hoffte, dass Formula
statt FormulaLocal
ich mit um diese Lokalisierung Leiden bekommen konnte, aber anscheinend ist dies nicht der Fall ist.
Gibt es irgendeine Weise, die ich nicht lokalisierten Formeln verwenden kann? Ich denke, es gibt eine gut versteckte Umgebung.
Ja, es funktioniert für mich. Ich benutze Excel in Spanisch und die Eigenschaft Formel ist mit englischen Namen zugewiesen und es funktioniert.Keine versteckten Einstellungen, aber ich erinnere mich, dass es bei älteren Excel-Versionen (vor 12, ziemlich alt) nicht funktioniert hat. –
@ CarlosE.Ferro Bedeutet "12" Office 12 oder Office 2007? Ich verwende Excel 2010 hier. – mkluwe
Ja, ich sagte dir, es war ziemlich alt. Excel 2007 hat funktioniert, also weiß ich nicht, warum es bei Ihnen nicht funktioniert. Entschuldigung :-( –