Es gibt mehrere Textfelder in einer Excel-Datei als ActiveX-Objekte, und ich möchte sie von Codebehind erreichen.
Ich verwende ClosedXML für andere Felder, aber ich bin offen für andere Vorschläge.
Fügen Sie für den Zugriff auf OLE-Objekte aus C # einen Verweis auf die Microsoft Forms 2.0-Objektbibliothek hinzu. Sie können die Steuerelemente für das gewünschte Kontrollkästchen und Textfeld durchlaufen. Viel Spaß!
%Vor%Sie können eine Datei in VBA erstellen (in% appdata% -Ordner) und den Textbox-Wert in dieser Datei speichern ( anhand eines Beispiels, .ini-Datei ).
Und danach Datei in C # öffnen.
Wenn Sie ClosedXML verwenden, sollten Sie sich XLWSContentManager
Gemäß Microsoft :
ActiveX-Steuerelemente werden von OLEObject-Objekten in der OLEObjects-Auflistung dargestellt (alle OLEObject-Objekte befinden sich ebenfalls in der Shapes-Auflistung)
Wenn Sie also ClosedXML verwenden, müssen Sie XLWSContents.OleObjects
verwenden, aber wenn die Steuerelemente keine ActiveX-Steuerelemente sind und stattdessen die integrierten Excel Formular -Steuerelemente sind, müssen Sie sie verwenden XLWSContents.Controls
.
Beachten Sie jedoch die MS-Dokumentation - Für die Implementierung von ClosedXML müssen Sie möglicherweise auch die Shapes überprüfen.
Sie können alle OLE-Objekte wie unten beschrieben durchlaufen und das Textfeld, das Sie benötigen, mit dem Textfeldnamen oder Textfeldtext angeben. Anstelle von Ich können Sie Arbeitsblattbezug von außerhalb der Arbeitsmappe oder von Code verwenden.
%Vor%