| |
VB.NET - Ein- und UmsteigerFehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 27.06.12 13:57 |
| Hey ich bins nochmal,
von einem Problem ins andere reingestolpert.
Wenn ich diesen Code hier ausführe haut der mir die Fehlermeldung: Object refeerence not set to an instance of an object.
Und der Code der ausgeführt wird ist der hier
Do
If (xls_Appl.ActiveCell.Text) = Nothing Then
Exit Do
Else
this_row.test_1 = xls_Appl.ActiveCell.Text
xls_Appl.ActiveCell.Offset(1, 0).Activate()
this_row.Test_2 = xls_Appl.ActiveCell.Text
this_row.test_1 = Replace(this_row.test_1, vbNewLine, " ")
this_row.Test_2 = Replace(this_row.Test_2, vbNewLine, " ")
Hour = My.Computer.Clock.LocalTime.Hour
Minute = My.Computer.Clock.LocalTime.Minute
Second = My.Computer.Clock.LocalTime.Second
Stundenzeit = Hour & ":" & Minute & ":" & Second
'Dim Log As String = (Stundenzeit & " -on " +
' this_row.test_1 + " -ot file -actn ace -ace " +
' this_row.Test_2)
MessageBox.Show(log)
Dim p As New Process
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.FileName = "SetACL"
p.StartInfo.Arguments = "-on " + this_row.test_1 + " -ot" & _
"file -actn ace -ace " + this_row.Test_2
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
TextBox3.Text = s
p.WaitForExit()
If File.Exists(TextBox2.Text & "Test.txt") = False Then
My.Computer.FileSystem.WriteAllText(TextBox2.Text & _
"Test.txt", log, True)
Else
objDateiMacher = New StreamWriter(TextBox2.Text & "" & _
"Test.txt")
objDateiMacher.Write(log)
objDateiMacher.Close()
objDateiMacher = Nothing
End If
End If
Loop
Beitrag wurde zuletzt am 27.06.12 um 13:58:37 editiert. | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 27.06.12 14:40 |
| Steht doch oben =)
Die Zelle
A1 bis A4 sind bei mir beschrieben diese liest der auch aus aber sobald er zur Zelle A5 kommt die leer ist wirft er mir diesen Fehler aus. Und die Fehlermeldung passiert bei der Zeile If (xls_Appl.ActiveCell.Text) = Nothing Then | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: effeff | Datum: 27.06.12 15:24 |
| If (xls_Appl.ActiveCell.Text) = "" Then EALA FREYA FRESENA | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 27.06.12 16:09 |
| Also ich weiß auch nicht wo da der Wurm ist. Ich habe es jetzt geändert in If xls_Appl.ActiveCell.Text = "" Then . Aber es klappt immer noch nicht. Das Lustige an der Sache ist. Manchmal läuft es und Manchmal nicht | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: effeff | Datum: 27.06.12 17:26 |
| Der Fehler wird dir dabei immer noch in derselben Zeile angezeigt?
Du solltest etwas orientierter arbeiten; Du hast zwar ein Excel-Objekt, aber keines für das Workbook und keines für das Worksheet. Eine Excel-Zelle ist normalerweise ein Range. Den verwendest du auch nicht. Zum zugreifen auf eine Zelle brauchst du diese nicht zu aktivieren, sondern verwendest einfach den Range.
Beispiel:
Dim XL As New Microsoft.Office.Interop.Excel.Application
Dim wb As Microsoft.Office.Interop.Excel.Workbook
Dim ws As Microsoft.Office.Interop.Excel.Worksheet
Dim rg As Microsoft.Office.Interop.Excel.Range
wb=XL.Workbooks.Open("d:\irgendwas\juhu\hallöle\nochwas.xls")
ws=wb.Sheets("Tabelle1")
rg=ws.Range("A5")
Do
if rg.Text="" Then Exit Do
'blablablairgendwelcherCode
Loop Until Weihnachten=Ostern
rg=Nothing
ws=Nothing
wb=Nothing
XL.Quit
XL=Nothing
EALA FREYA FRESENA | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 28.06.12 08:20 |
| So es klappt leider immer noch nicht. Mein Code sieht jetzt so aus.
xls_Appl = CreateObject("Excel.Application")
wb = xls_Appl.Workbooks.Open(TextBox1.Text)
ws = wb.Sheets("Sheet1")
xls_Appl.Visible = False
Excel_open = True
rg = ws.Range("A1")
Dim this_row As ExcelRows
Do
If rg.Text <> "" Then
this_row.test_1 = rg.Text
xls_Appl.Range(1, 0).Activate()
this_row.Test_2 = rg.Text
xls_Appl.Range(1, 0).Activate()
this_row.test_1 = Replace(this_row.test_1, vbNewLine, " ")
this_row.Test_2 = Replace(this_row.Test_2, vbNewLine, " ")
Hour = My.Computer.Clock.LocalTime.Hour
Minute = My.Computer.Clock.LocalTime.Minute
Second = My.Computer.Clock.LocalTime.Second
Stundenzeit = Hour & ":" & Minute & ":" & Second
Dim Log As String = (Stundenzeit & "-on " + this_row.test_1 _
+ " -ot file -actn ace -ace """ + this_row.Test_2 + """")
MessageBox.Show(Log)
TextBox4.Text = "-on " + this_row.test_1 + " -ot file -actn" & _
"ace -ace """ + this_row.Test_2 + """"
Dim p As New Process
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.FileName = "SetACL"
p.StartInfo.Arguments = "-on " + this_row.test_1 + " -ot" & _
"file -actn ace -ace """ + this_row.Test_2 + """"
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
TextBox3.Text = s
p.WaitForExit()
If File.Exists(TextBox2.Text & "Test.txt") = False Then
My.Computer.FileSystem.WriteAllText(TextBox2.Text & _
"Test.txt", Log, True)
Else
objDateiMacher = New StreamWriter(TextBox2.Text & "" & _
"Test.txt")
objDateiMacher.Write(Log)
objDateiMacher.Close()
objDateiMacher = Nothing
End If | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 28.06.12 11:25 |
| Er wirft mir immer noch den gleichen Fehler an den Kopf bzw. wenn der Fehler nicht kommt wird es zu einer Endloss-Schleife | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 28.06.12 11:39 |
| Es steht nirgendswo Nothing drinne. Aber er wirft mir jetzt auch noch die Fehlermeldung. Expection from HRESULT: 0x8000A03EC aus.
In der Zeile xls_Appl.Range(1, 0).Activate() | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DaveS (Moderator) | Datum: 28.06.12 12:29 |
| Und du hast uns eben gerade erzählt du würdest den gleichen Fehler bekommen. Außerdem ist dein Code hier nicht vollständig, wir wissen nicht wie Variablen deklariert sind, was am Ende der Schleife passiert, ob der Fehler sofort passiert usw. usw. Wir wollen auch nicht in anderen Threads nachschlagen wie ExcelRows aussieht.
Die Range Angabe ist aber falsch und .Activate() brauchst du sowieso gar nicht.
Sowas kannst du auch schreiben
Dim rg As Excel.Range = ws.Range("C2", "D4")
Dim this_row As ExcelRows
For row As Integer = 1 To 3
If rg(row, 1).Text <> "" Then
this_row.test_1 = rg(row, 1).Text
this_row.Test_2 = rg(row, 2).Text
Debug.WriteLine("r1: " & this_row.test_1 & " r2: " & _
this_row.Test_2)
End If
Next Ich weiß natürlich nicht genau was du da programmierst.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 28.06.12 12:53 |
| Habe es gelöst =) Und zwar so ^^
Do
If rg.Text <> "" Then
rg = ws.Range("A" + rows)
this_row.test_1 = rg.Text
rg = ws.Range("B" + rows)
this_row.Test_2 = rg.Text
rows = rows + 1
this_row.test_1 = Replace(this_row.test_1, vbNewLine, " ")
this_row.Test_2 = Replace(this_row.Test_2, vbNewLine, " ")
Hour = My.Computer.Clock.LocalTime.Hour
Minute = My.Computer.Clock.LocalTime.Minute
Second = My.Computer.Clock.LocalTime.Second
Stundenzeit = Hour & ":" & Minute & ":" & Second
Dim Log As String = (Stundenzeit & "-on " + this_row.test_1 _
+ " -ot file -actn ace -ace """ + this_row.Test_2 + """")
MessageBox.Show(Log)
TextBox4.Text = "-on " + this_row.test_1 + " -ot file -actn" & _
"ace -ace """ + this_row.Test_2 + """"
Dim p As New Process
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.FileName = "SetACL"
p.StartInfo.Arguments = "-on " + this_row.test_1 + " -ot" & _
"file -actn ace -ace """ + this_row.Test_2 + """"
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
TextBox3.Text = s
p.WaitForExit()
If File.Exists(TextBox2.Text & "Test.txt") = False Then
My.Computer.FileSystem.WriteAllText(TextBox2.Text & _
"Test.txt", Log, True)
Else
objDateiMacher = New StreamWriter(TextBox2.Text & "" & _
"Test.txt")
objDateiMacher.Write(Log)
objDateiMacher.Close()
objDateiMacher = Nothing
End If | |
Re: Fehlermeldung beim Erreichen von einer leeren Zelle in Excel | | | Autor: DarkEndain | Datum: 28.06.12 12:59 |
| Bitte Bitte =) Mehr Leute finden immer mehr als eine. ^^ | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|