| 

.NET C# Java Javascript Exception

5
Hallo,

ich habe einen Vb2010- Code, mit dem man Felder in Excel-Sheets Lesen, Schreiben, etc. kann.

Aus Interesse habe ich nun
auf Option Strict On umgeschaltet.

Somit habe ich jede Menge Errors.

Was ich nicht lösen kann ist das mit Excel.

'Option Strict on disallows late binding'

Die meisten Fehler betreffen die .cells am Ende meines Beispielcodes.

mein Code sieht in Kürze so aus.


Das einfachste ist sicherlich wieder auf Strict off zu gehen, aber es würde mich schon mal interessieren, wie man das richtig macht!



Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel

Sub DruckeParameterMGC()

Dim xlApp As New Excel.Application

Dim xlFile As String = String.Empty
Dim xlBook As Excel.Workbook
Dim xlSheetKanPara As Excel.Worksheet

xlApp.Visible = True

xlFile = "C:\Vorlage\Vorlage.xlsx"

' ---- Excel aufrufen und für DDE vorbereiten
xlBook = xlApp.Workbooks.Open(Filename:=xlFile)

xlSheetKanPara = CType(xlBook.Sheets("KanalParameter"), Worksheet)

' ---------------------------------------------------------------------------------
' ---------------------------------------------------------------------------------
' zuerst die Headerdaten
' ---------------------------------------------------------------------------------
' ---------------------------------------------------------------------------------

xlSheetKanPara.Cells(2, 3).value = lblMwaPrNr.Text
xlSheetKanPara.Cells(2, 6).value() = lblMesid.Text


end sub


Danke für Eure Tipps!

hupsi
05.03.2014
hupsi 201 1 7
2 Antworten
2
Das Problem ist, dass die Excel-Schnittstelle viel mit dem Rückgabewert "Object" arbeitet. Somit kann z.B. bei der Cells-Auflistung zur Compile-Zeit nicht festgestellt werden, welche Methoden und Properties das zurückgegebene Objekt enthält. VB ist in dieser Hinsicht gr großzügig. Mit der Voreinstellung "Option Strict Off" werden solche Prüfungen unterdrückt.

Eine Lösung wäre, die Zelle in ein Range-Objekt zu konvertieren. Auf diesem kannst du dann die Methoden aufrufen. Ein Beispiel:

// Zelle konvertieren
Dim currentCell As Range = CType(xlSheetKanPara.Cells(2, 3), Range)
// oder alternativ
currentCell = xlSheetKanPara.Range("B3")
// oder auch so
currentCell = xlSheetKanPara.Range(xlSheetKanPara.Cells(2, 3))
// und hier der Zugriff
currentCell.Value2 = "Test"


Entschuldige die C#-Kommentare, aber ansonsten würde der ganze Code als Kommentar dargestellt.
06.03.2014
luedi 2,1k 1 9
0
Danke!

Genau das habe ich gesucht!
06.03.2014
hupsi 201 1 7
1
Dann wäre es schön, wenn du deine Frage als beantwortet markieren (auf das grüne Häkchen neben meiner Antwort klicken) und meine Antwort bewerten würdest. Dies gehört in diesem Forum zum guten Ton.
luedi 07.03.2014
Danke für das voten. Noch ein kleiner Tip: Du kannst für Kommentare oder um dich zu bedanken auch die Kommentarfunktion benutzen. Die Antworten werden nach Anzahl Punkten absteigend sortiert. So kann es vorkommen, dass dein Kommentar auf eine Antwort aus dem Zusammenhang gerissen wird.
luedi 08.03.2014

Stelle deine Excel-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH