Excel 2007 Probleme mit VB.net

15/12/2009 - 16:26 von Suren Ariyaratnam | Report spam
Hallo Zusammen

Versuche eine xlsx Datei zu öffnen und die darinenthaltene Daten auszulesen.
Das klappt halbwegs, die Daten werden in die Collection abgefüllt und auch in
die CE geschrieben, nur bekomme ich diese Ausnahme zu sehen: "Ausnahme von
HRESULT: 0x800401A8" habe gegooglet was das zeug hàlt, aber nichts gefunden,
ausser dass es
sich immmer auf das object Range bezieht. Hatte bis jetzt keinen einfluss,
trotzdem möchte ich das weg haben.
Bedanke mich für jede Hilfe.

PS: schlimmste ist wenn man im web nach einem Code snippet sucht und man
findet einen, der aber bei dir nicht funktioniert:-(


Suren


Code:
Dim FileName As String = "TempCEtoExcel.xlsx"
Gv_Pfad = Gv_Pfad & "\" & FileName

Dim vAppExcel As Microsoft.Office.Interop.Excel.Application
Dim vWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim vSheet As New Microsoft.Office.Interop.Excel.Worksheet
Dim vRange As Microsoft.Office.Interop.Excel.Range

vAppExcel = New Microsoft.Office.Interop.Excel.Application
vWorkBook = vAppExcel.Workbooks.Open(Gv_Pfad, False, False, , ,
False, , , , True)
vAppExcel.Visible = True
vWorkBook.Activate()
vSheet = CType(vWorkBook.Worksheets(1),
Microsoft.Office.Interop.Excel.Worksheet)

Dim XLSX_Row As Integer = 2
Dim XLSX_Column As Integer = 1

Dim i As Integer
Dim vRowsCount As Microsoft.Office.Interop.Excel.Range =
vSheet.Cells.End(XlDirection.xlDown)
Dim vWertString As Object = ""
Gv_WertCollection = New Collection

Try
For i = 2 To vSheet.Rows.Count
'vRange = CType(vSheet.Cells(XLSX_Row, XLSX_Column),
Microsoft.Office.Interop.Excel.Range)
vRange = vSheet.Cells(XLSX_Row, XLSX_Column)
If vRange.Value = "" Then
XLSX_Column = XLSX_Column + 1
i = 2
XLSX_Row = 2
vRange = vSheet.Cells(XLSX_Row, XLSX_Column)
If vRange.Value = "" Then
MsgBox("Die Datei wird abgeseichert")
vWorkBook.Save()
vAppExcel.Workbooks.Close()
vAppExcel.Quit()
'releaseObject(vRange)
'releaseObject(vSheet)
'releaseObject(vWorkBook)
Else
Gv_WertCollection.Add(vRange.Value)
XLSX_Row = XLSX_Row + 1
End If
Else
Gv_WertCollection.Add(vRange.Value)
XLSX_Row = XLSX_Row + 1
End If

Next
Catch ex As Exception
MsgBox("Fehller bei Werte Übergabe" & vbCrLf & ex.Message)
End Try

Return Gv_WertCollection





VB.net
 

Lesen sie die antworten

#1 Andreas Killer
15/12/2009 - 17:52 | Warnen spam
Suren Ariyaratnam schrieb:

Das klappt halbwegs, die Daten werden in die Collection abgefüllt und auch in
die CE geschrieben, nur bekomme ich diese Ausnahme zu sehen: "Ausnahme von
HRESULT: 0x800401A8" habe gegooglet was das zeug hàlt, aber nichts gefunden,
ausser dass es sich immmer auf das object Range bezieht.


Kann ich nichts zu sagen, hab kein .NET und der Code sieht (für mich)
etwas seltsam aus.

Der Integer von .NET reicht die die Zeilenzahl von Excel?

Du durchlàufst jede Spalte bis eine Zelle leer ist und gehst dann zur
nàchsten, nimmst alle Werte auf, richtig?

Ich würd das eher so machen.

Andreas.

Dim FileName As String = "TempCEtoExcel.xlsx"
Gv_Pfad = Gv_Pfad & "\" & FileName

Dim vAppExcel As Microsoft.Office.Interop.Excel.Application
Dim vWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim vSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim vRange As Microsoft.Office.Interop.Excel.Range

vAppExcel = New Microsoft.Office.Interop.Excel.Application
vWorkBook = vAppExcel.Workbooks.Open(Gv_Pfad, False, False, , _
, False, , , , True)
vAppExcel.Visible = True
vSheet = vWorkBook.Worksheets(1)

Dim XLSX_Row As Integer = 2
Dim XLSX_Column As Integer = 1

Gv_WertCollection = New Collection

Dim i As Integer, j As Integer
Dim vRowsCount As Integer, vColsCount As Integer
'Letzte Spalte in Zeile 1
vColsCount = vSheet.Cells(1, vSheet.Columns.Count).End( _
XlDirection.xlToLeft).Column

Try
Again:
For j = XLSX_Column To vColsCount
'Letzte Zeile dieser Spalte
vRowsCount = vSheet.Cells(vSheet.Rows.Count, j).End( _
XlDirection.xlUp).Row
For i = XLSX_Row To vRowsCount
vRange = vSheet.Cells(i, j)
If vRange.Value = "" Then Exit For
Gv_WertCollection.Add (vRange.Value)
Next
Next
Catch ex As Exception
MsgBox ("Fehller bei Werte Übergabe" & vbCrLf & ex.Message)
End Try
vWorkBook.Close()
vAppExcel.Quit()

Return Gv_WertCollection

Ähnliche fragen