Ich versuche, in eine Excel-Datei in VB zu schreiben, aber ich habe Probleme aufgrund einer Nested-Loop-Struktur (denke ich). Mein Code ist wie folgt:VB Schreiben nach Excel
Public Class Form1
Dim SheetIncrementValue As Integer = 1
Dim FilePath As String
Dim j As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim TestOutput() As Double
If j = 0 Then
If SheetIncrementValue = 1 Then
wb = xl.Workbooks.Add 'create new workbook
ws = wb.Worksheets(SheetIncrementValue)
ws.Activate()
ws.Cells(j + 1, 1) = TestOutput(j)
Dim sfd1 As New SaveFileDialog()
SetPath If sfd1.ShowDialog() = DialogResult.OK Then
wb.SaveAs(sfd1.FileName) 'save data to file
ws.Name = "Temperature " & TempSetting
FilePath = sfd1.FileName
wb.Close()
xl = Nothing 'dispose of excel
Else
MsgBox("please choose a file path and file name")
GoTo SetPath
End If
Else
wb = xl.Workbooks.Open(FilePath)
Dim worksheets As Excel.Sheets = wb.Worksheets
Dim xlNewSheet = DirectCast(worksheets.Add(worksheets(1), Type.Missing, Type.Missing, Type.Missing), Excel.Worksheet)
xlNewSheet.Name = "Output " & SheetIncrementValue
xlNewSheet.Cells(j + 1, 1) = TestOutput(j)
wb.Close()
xl = Nothing 'dispose of excel
End If
Else
wb = xl.Workbooks.Open(FilePath)
Dim worksheets As Excel.Sheets = wb.Worksheets
'Dim xlNewSheet = DirectCast(worksheets.Add(worksheets(1), Type.Missing, Type.Missing, Type.Missing), Excel.Worksheet)
Dim xlNewSheet = wb.Worksheets("Output " & SheetIncrementValue)
xlNewSheet.Cells(j + 1, 1) = TestOutput(j)
wb.Close()
xl = Nothing 'dispose of excel
End If
j = j + 1
SheetIncrementValue = SheetIncrementValue + 1
End Sub
End Class
Es funktioniert gut, wenn j = 0, aber für höhere Schritten den Fehler auslöst: ‚Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt‘ in der Dateipfadzeile. Da die Datei bereits existiert und die Variable FilePath zugewiesen wurde (ich habe sie geprüft), wie öffne ich die Datei erneut, um mehr Daten in das selbe Blatt zu schreiben?
Ich stelle fest, dass die Verwendung von 'j' und 'Blatt Inkrement Wert' hier überflüssig ist, aber sie haben Funktionen in meinem vollständigen Code.
Alle Tipps geschätzt.
Dank
Dieses korrekt markiert ist, in Visual Studio vb.net mit der Entwicklung. – cohara