Fehlermeldung: Object reference not set to an instance of an object.

deen_90

Erfahrenes Mitglied
Hallo

Ich komme mal wieder nicht weiter....

Also ich muss ja ein Programm schreiben dass eine bestimmte Exceldatei öffnet und dort bestimmte Zeilen, Spalten und das erste Zeichen löscht.
Das auf machen der DAtei funktioniert guet, aber wenn er das erste Zeichen löschen soll, so kommt immer die gleiche Fehlermeldung( Object reference not set to an instance of an object.) Leider habe ich keine Ahnung was das bedeutet....ich habe auch schon im Internet nach geschaut, aber finde nicht.

Hier ist der Code:

Public Class Form1

Dim jahr
Dim monat
Dim i
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlMappe As Microsoft.Office.Interop.Excel.Workbook
Dim xlBlatt As Microsoft.Office.Interop.Excel.Worksheet
Dim Range As Microsoft.Office.Interop.Excel.Range
Dim Application As Microsoft.Office.Interop.Excel.Application
Dim excelobj As Object


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Zeigt die Form
Me.Show()

'aktuelles Jahr wird angezeigt
Label3.Text = DateTime.Now.Year

'aktuelles Jahr und Monat wird in Variable gespeichert
monat = DateTime.Now.Month
jahr = DateTime.Now.Year

'Wenn der Monat 1 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 1 Then
Label4.Text = "Januar"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Januar\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 2 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 2 Then
Label4.Text = "Februar"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Februar\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 3 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 3 Then
Label4.Text = "Maerz"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Maerz\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 4 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 4 Then
Label4.Text = "April"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\April\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 5 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 5 Then
Label4.Text = "Mai"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Mai\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 6 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 6 Then
Label4.Text = "Juni"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Juni\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 7 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 7 Then
Label4.Text = "Juli"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Juli\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 8 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 8 Then
Label4.Text = "August"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\August\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 9 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 9 Then
Label4.Text = "September"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\September\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 10 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 10 Then
Label4.Text = "Oktober"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Oktober\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 11 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 11 Then
Label4.Text = "November"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\November\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Wenn der Monat 12 ist, dann muss er Januar im Label ausgeben, danach wird die Datei geöffnet
If monat = 12 Then
Label4.Text = "Dezember"

excelobj = GetObject("C:\IT\ITSM_public\Verrechnung\" & jahr & "\Dezember\ITSM_INV_CHIND.xls")
excelobj.application.Visible = True
Dim winCount As Integer = excelobj.Parent.Windows.Count()
excelobj.Parent.Windows(winCount).Visible = True

End If

'Schliesst die Form wenn der Code ausgeführt wurde
Me.Close()

'-------------------------------------------makro--------------------------------------------------------


' erstes Zeichen löschen

For i = 22000 To 1 Step -1
Range("A" & i) = Mid(Range("A" & i), 1, Len(Range("A" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("B" & i) = Mid(Range("B" & i), 1, Len(Range("B" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("C" & i) = Mid(Range("C" & i), 1, Len(Range("C" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("D" & i) = Mid(Range("D" & i), 1, Len(Range("D" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("E" & i) = Mid(Range("E" & i), 1, Len(Range("E" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("F" & i) = Mid(Range("F" & i), 1, Len(Range("F" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("G" & i) = Mid(Range("G" & i), 1, Len(Range("G" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("H" & i) = Mid(Range("H" & i), 1, Len(Range("H" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("I" & i) = Mid(Range("I" & i), 1, Len(Range("I" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("J" & i) = Mid(Range("J" & i), 1, Len(Range("J" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("K" & i) = Mid(Range("K" & i), 1, Len(Range("K" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("L" & i) = Mid(Range("L" & i), 1, Len(Range("L" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("M" & i) = Mid(Range("M" & i), 1, Len(Range("M" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("N" & i) = Mid(Range("N" & i), 1, Len(Range("N" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("O" & i) = Mid(Range("O" & i), 1, Len(Range("O" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("P" & i) = Mid(Range("P" & i), 1, Len(Range("P" & i)) + 1)
Next

For i = 22000 To 1 Step -1
Range("Q" & i) = Mid(Range("Q" & i), 1, Len(Range("Q" & i)) + 1)
Next

'Zeilen löschen

For i = 22000 To 1 Step -1
If xlBlatt.Cells(i, 2) = "ATB" Then xlBlatt.Rows(i).Delete()
Next

For i = 22000 To 1 Step -1
If xlBlatt.Cells(i, 2) = "AFS" Then xlBlatt.Rows(i).Delete()
Next

For i = 22000 To 1 Step -1
If xlBlatt.Cells(i, 2) = "ATL" Then xlBlatt.Rows(i).Delete()
Next

For i = 22000 To 1 Step -1
If xlBlatt.Cells(i, 2) = "ATM" Then xlBlatt.Rows(i).Delete()
Next

For i = 22000 To 1 Step -1
If xlBlatt.Cells(i, 2) = "SAP" Then xlBlatt.Rows(i).Delete()
Next

'Kollonen löschen

xlBlatt.Range("A:A").Delete()

xlBlatt.Range("C:C").Delete()

xlBlatt.Range("C:C").Delete()

xlBlatt.Range("E:E").Delete()

xlBlatt.Range("H:H").Delete()

xlBlatt.Range("J:J").Delete()

For i = 22000 To 1 Step -1
If xlBlatt.Cells(i, 10) = "Storage SAN: Homefolder" Then
xlBlatt.Cells.Value = "used space on K:\ (Homefolder)"
End If
Next

'------------------------------------------speichern nach Makro--------------------------------------------------

'aktuelles Jahr und Monat wird in Variable gespeichert
monat = DateTime.Now.Month
jahr = DateTime.Now.Year

If monat = 1 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Januar\ITSM_INV_CHIND_1.xls")
End If

If monat = 2 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Februar\ITSM_INV_CHIND_1.xls")
End If

If monat = 3 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Maerz\ITSM_INV_CHIND_1.xls")
End If

If monat = 4 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \April\ITSM_INV_CHIND_1.xls")
End If

If monat = 5 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Mai\ITSM_INV_CHIND_1.xls")
End If

If monat = 6 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Juni\ITSM_INV_CHIND_1.xls")
End If

If monat = 7 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Juli\ITSM_INV_CHIND_1.xls")
End If

If monat = 8 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \August\ITSM_INV_CHIND_1.xls")
End If

If monat = 9 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \September\ITSM_INV_CHIND_1.xls")
End If

If monat = 10 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Oktober\ITSM_INV_CHIND_1.xls")
End If

If monat = 11 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \November\ITSM_INV_CHIND_1.xls")
End If

If monat = 12 Then
xlMappe.SaveAs(Filename:= _
"C:\IT\ITSM_public\Verrechnung\ " & jahr & " \Dezember\ITSM_INV_CHIND_1.xls")
End If

Application.DisplayAlerts = False

xlApp.Quit()


End Sub
End Class

Ich hoffe dass mir jemand weiterhelfen kann.

glg deni
 
Hi

1. Bitte setz den Quellcode in die entsprechenden Tags, so dass er sich besser lesen lässt ([ vbnet ] oder wenigsten [ code ] jeweils ohne Leerzeichen versteht sich)

2. Die Meldung bedeutet, dass ein Objekt, welches du nutzen willst, nicht instanziert ist.
Welches das ist kannst du ganz leicht selbst mit dem Debugger herausfinden. (Breakpoint setzen, Schritt für Schritt zur entsprechenden Stelle gehen und schauen, welches Objekt oder Property null bzw. nothing ist)
 
also er macht mir immer bei diesem Code Probleme:

For i = 22000 To 1 Step -1
Range("A" & i) = Mid(Range("A" & i), 1, Len(Range("A" & i)) + 1)
Next

Ich weiss nicht wie ich den Fehler beheben kann.Ich habe auch schon den Ausbilder gefragt, aber er weiss auch nicht weiter.
 
Hi

Dann würde ich ganz stark behaupten, dass das Range-Objekt nicht instanziert ist.
Setz in die entsprechende Zeile einen Breakpoint. Wenn du mit der Maus über die einzelnen Objekt gehst, werden dir deren Werte angezeigt.

PS:
Gib mal deinem Ausbilder einen Rüffel, sowas muss er sehen bzw. herausfinden woran es liegt ;)

PPS:
Bitte bearbeite nochmal deine Posts und setz den Quellcode in die entsprechende Code-Tags wie oben beschrieben. Das macht das ganze erheblich einfacher zu lesen. Danke dir
 
aslo ich habe auch schon herausgefunden dass es nicht instanziert wurde odr wie man das auch nennt.abr wie chan ich das jetzt instanzieren?
 
Du gar nicht! Das entsprechende Objekt musst du dir vom Excel-Sheet geben lassen, dass du bearbeitest.

Such mal hier im Forum nach Excel (Forum auf .NET und Unterforen einschränken), da findest du bestimmt ein paar Beispiele.
 
Zurück