Hallo an alle,
nach tagelanger Suche nach der Lösung für den genannten Fehlercode, seid ihr jetzt gefragt. Nach diesem Fehler wurde auch hier schon 2 mal gefragt. Jedoch wurde ich daraus auch nicht schlauer. Der Sub ist aus einem alten Prog von 2013, welches seit dem auch stabil seinen Dienst tut.
Nach vielen Jahren muss ich daran wieder mal ein bisschen was aktualisieren. Die Excel Datei die hier verarbeitet wird, kommt von einer externen Quelle. Dort wurde in den Überschriften ein Chr(160) reingeschoben. Somit kann mein String Vergleich nicht funktionieren. Also war meine Idee, über ein Replace diesen Chr(160) rauszunehmen. Leider scheitert es schon bei der Deklarierung der Variable "TKopf". In die soll per nur der Inhalt einer Zelle X eingelesen werden.
Wie gesagt, hat das seit Jahren funktioniert, nur soll jetzt dieser Chr(160) rausgefiltert werden. Selbst ein deklarieren einer Integer Variable scheitert. Seit Visual Studio 2010 scheint so manches passiert zu sein.
Gruß, Stefan.
*Label und BBCode auf .NET geändert*
nach tagelanger Suche nach der Lösung für den genannten Fehlercode, seid ihr jetzt gefragt. Nach diesem Fehler wurde auch hier schon 2 mal gefragt. Jedoch wurde ich daraus auch nicht schlauer. Der Sub ist aus einem alten Prog von 2013, welches seit dem auch stabil seinen Dienst tut.
Nach vielen Jahren muss ich daran wieder mal ein bisschen was aktualisieren. Die Excel Datei die hier verarbeitet wird, kommt von einer externen Quelle. Dort wurde in den Überschriften ein Chr(160) reingeschoben. Somit kann mein String Vergleich nicht funktionieren. Also war meine Idee, über ein Replace diesen Chr(160) rauszunehmen. Leider scheitert es schon bei der Deklarierung der Variable "TKopf". In die soll per nur der Inhalt einer Zelle X eingelesen werden.
Wie gesagt, hat das seit Jahren funktioniert, nur soll jetzt dieser Chr(160) rausgefiltert werden. Selbst ein deklarieren einer Integer Variable scheitert. Seit Visual Studio 2010 scheint so manches passiert zu sein.
Gruß, Stefan.
VB.NET-Quellcode
- Sub Primas_Report_einlesen()
- Dim oXL As Excel.Application
- Dim oWB As Excel.Workbook
- Dim oSheet As Excel.Worksheet
- Dim i, l As Integer
- Dim Eqnr, PMnr, Raum, Typbez, kalizy_DS As Integer
- Dim TKof As String
- If File.Exists(ExcelDatei) Then 'Prüfen Exceldatei existiert
- GoTo Weiter
- Else 'Abfrage einer anderen Excel Datei, wenn "Primas-Report.xls" nicht gefunden wurde
- OpenFileDialog1.InitialDirectory = "G:\QSG\Messraum\PP_Druck\"
- OpenFileDialog1.Filter = "Alle Dateien (*,*)|*.*"
- OpenFileDialog1.FilterIndex = 1
- If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
- ExcelDatei = OpenFileDialog1.FileName
- Else
- Dim prozess As Process = System.Diagnostics.Process.GetCurrentProcess()
- prozess.Kill()
- End If
- End If
- Weiter:
- Try
- oXL = CreateObject("Excel.Application")
- oWB = oXL.Workbooks.Open(ExcelDatei)
- oSheet = oWB.ActiveSheet
- anz = oSheet.UsedRange.Rows.Count
- Form4.ProgressBar1.Maximum = anz
- Form4.Show()
- ReDim Suchwerte(anz, 3)
- 'suchen der Spalten nach Suchkriterien
- For i = 1 To 25
- TKof = oSheet.Cells(1, i).value
- If oSheet.Cells(1, i).value = "Equipmentnummer" Then
- Eqnr = i
- End If
- If oSheet.Cells(1, i).value = "Prüfmittelnummer" Then
- PMnr = i
- End If
- If oSheet.Cells(1, i).value = "Raum" Then
- Raum = i
- End If
- If oSheet.Cells(1, i).value = "Typenbezeichnung" Then
- Typbez = i
- End If
- If oSheet.Cells(1, i).value = "Kalibrierzyklus" Then
- kalizy_DS = i
- End If
- Next
- '--------------------------------------
- For i = 0 To anz
- l = i + 1
- Suchwerte(i, 0) = oSheet.Cells(l + 1, Eqnr).value
- Suchwerte(i, 1) = oSheet.Cells(l + 1, PMnr).value
- Suchwerte(i, 2) = oSheet.Cells(l + 1, Raum).value & " " & oSheet.Cells(l + 1, Typbez).value
- Suchwerte(i, 3) = Val(Mid(oSheet.Cells(l + 1, kalizy_DS).value, 1, 2))
- Form4.Label3.Text = i
- Form4.ProgressBar1.Value = i
- Next
- oXL.Quit()
- Form4.Close()
- Catch
- Form4.Close()
- Dim prozess() As Process = Process.GetProcessesByName("Excel")
- prozess(0).Kill()
- End Try
- Call Umwandeln() 'Daten aus Array in "TestoDB.txt" schreiben
- MsgBox("Daten wurden aktualisiert")
- End Sub
*Label und BBCode auf .NET geändert*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()