Excel get_Range fehlt, wenn interop-assembly eingebettet ist .NET 4.0
Baue ich eine assembly verweisen auf eine COM-interop DLL. Wenn ich es einbetten, das COM-interop-Typen durch Einstellung Einbetten von Interop-Typen auf True in der Referenz-Eigenschaften (VS2010), zur Laufzeit tritt ein Fehler auf "Objekt" enthält keine definition für get_Range". Wenn COM-interop-Typen, die nicht eingebettet sind, dann tritt kein Fehler auf.
Weiß jemand, warum eine bestimmte Methode, Arbeitsblatt.get_Range-sollte entfallen oder wie Sie arbeiten, um dieses oder andere relevante Erkenntnisse? Ich sollte dankbar sein für jede Hilfe.
Die interop-dll enthält eine Referenz auf das Arbeitsblatt.get_Range(Objekt, [Objekt]). Mit dem Reflektor auf meinem aufrufenden assembly, gibt es keine Erwähnung von get_Range unter Arbeitsblatt.
Den interop-assembly, die ich bin Einbettung erzeugt wird von Excel9.olb. Ich bin nicht mit PIAs als die Anwendung zielt auf mehrere Excel-Versionen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe nicht versucht, diese aus mir noch nicht, aber ich glaube, dass die syntax sich geändert hat, wenn Sie mit embedded-COM-Interop-Typen in C# 4.0 zu einem "C# - friendly" - syntax.
Daher, statt der Suche nach der
get_Range(object, [object])
- Methode, können Sie entweder das weglassen der optionalen parameter (anstatt zu bietenType.Missing
), oder Sie können vermeiden, den Aufruf der get-accessor ganz, und statt dessen Referenz die Eigenschaft name mit eckigen Klammern:Was ich verstehen, jedoch sollten Sie immer noch in der Lage sein, es zu nennen den "alten Weg", wo der neue indexer-syntax ist wirklich aufrufen die gewünschten 'get' und 'set' - accessor hinter den kulissen, also ich weiß wirklich nicht, warum Sie in Schwierigkeiten sind. Meine Vermutung ist, dass Sie brauchen, um sich unter
Worksheet.Range
stattWorksheet.get_Range
innerhalb der IntelliSense-Liste. Wenn dies nicht für Sie arbeiten, dann klingt es wie etwas falsch sein kann mit Ihrem setup oder installation.Mehr dazu finden Sie unter: Indizierte Eigenschaften in C# 4.0 von Kirill Osenkov.
Hoffe, das hilft...
Mike
worksheet.Range["A1"]
syntax anstelle der älterenworksheet.get_Range("A1", Type.Missing)
jetzt, dass Sie mit C# 4.0? Sie haben eine sehr interessante Neugier, sondern als Befestigung für Ihren eigenen code, so scheint es am einfachsten und am besten nur die neue syntax verwenden-das ist einfacher zu Lesen, in jedem Fall (Gestaltung!).Dieser wurde ausgelöst, da ein Fehler mit Microsoft im beta-Stadium https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=530769&wa=wsignin1.0 und wurde gelöst, als Durch Design nach RTM. Mike Rosenblum ' s Antwort ist genehmigt es.
Diese können zusammengefasst werden als Excel.Range r = sh.Bereich[sh.Zellen[1, 1], sh.Zellen[2, 2]]; wo sh ist ein Arbeitsblatt.