2016-08-02 105 views
0

Ich habe ein Excel RangePtr Objekt, und ich versuche, die entsprechenden Zellen in Werte anstelle von Formeln zu konvertieren. Ich bin es gewohnt, dies in VBA zu tun, wo Sie dies einfach mit r.Value = r.Value tun können. In   C++ Ich habe einen analogen Ansatz versucht:Wie setze ich einen Excel RangePtr Wert = Wert in C++? Derzeit bekomme ich HRESULT 0x80004005

rng->Value = rng->Value; 

Aber wenn ich laufe, dass, erhalte ich eine Ausnahme von den HRESULT 0x8004005. Es gibt nichts in den Zellenwerten, das Excel zum Ersticken bringen sollte; die Werte, die zurückgegeben werden, sollten nur ein _variant_t sein, der SAFEARRAY von double Werte enthält. Was mache ich falsch?

Antwort

0

D'oh. Sieht aus wie RangePtr.Value hat tatsächlich eine XlRangeValueDataType Konstante angegeben werden, die nicht in VBA ist:

rng->Value[Excel::XlRangeValueDataType::xlRangeValueDefault] = rng->Value; 

Oder ich die Value2 Eigenschaft anstelle von einfachen Value genutzt haben könnte:

rng->Value2 = rng->Value2; 

Hoffentlich wird dies sein hilfreich für jemand anderen, der dieses Problem in der Zukunft hat.