VisualBasic Text aus Excel-Datei einlesen und vergleichen

Scindapsus

Cadet 3rd Year
Registriert
März 2011
Beiträge
58
Hallo,

ich habe folgendes Problem:
Ich soll ein Programm in Visual Basic 2010 schreiben, welches bestimmte Texte aus mehreren Excel-Dateien ausliest und mit einem vorgegebenen Text vergleicht.

Mein Programmablauf sieht wie folgt aus:
Ich lasse über einen FolderBrowserDialog den Pfad festlegen, in welchem die Excel-Dateien (nur xls-Dateien) liegen.
Nachdem dies geschehen ist, übergebe ich jede gefundene Excel-Datei einer Funktion, welche prüft, ob es sich um eine Materialbestellung handelt.

Meine Funktion sieht wie folgt aus:
HTML:
    'Prüft, ob die gefilterte Excel-Datei eine Materialbestellung ist.
    Public Function istDateiEineMaterialbestellung(ByVal file As String) As Boolean
        Dim yesno As Boolean
        Try
            excelapp.Workbooks.Open(file)
            Try
                If CStr(excelapp.Worksheets(1).Range("F1:L2").Value) = "MATERIALBESTELLUNG" Then
                    edt_AusgabeHinweis.Text &= CStr(excelapp.Worksheets(1).Range("F1:L2").Value)
                    yesno = True
                Else
                    yesno = False
                End If
            Catch ex As Exception
                MessageBox.Show(String.Format("Beim Verarbeiten der Datei {0}{1}{2}{1}{0} trat ein Fehler auf!", vbCrLf, Chr(34), file), _
                            "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try            
            excelapp.Workbooks.Close()
        Catch ex As Exception
            MessageBox.Show(String.Format("Beim Öffnen der Datei {0}{1}{2}{1}{0} trat ein Fehler auf!", vbCrLf, Chr(34), file), _
                            "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        Return yesno
    End Function

Es ist noch zu erwähnen, dass die Zellen "F1:L2" miteinander verbunden sind.
Wenn ich den Range nun auf F1 lege, bringt der Compiler mir Fehler, wenn der Text Materialbestellungen in den verbundenen Zellen F1:L2 steht. Lege ich den Range auf F1:L2 fest, bringt der Compiler mir aber auch Fehler, wenn der Text Materialbestellung gar nicht vorhanden ist oder aber es gar keine verbundenen Zellen gibt.

Wie kann ich diesen Sachverhalt lösen?
 
Ich programmiere leider nur in Office 2003 und kann daher deinen Code hier nicht ausprobieren (Catch scheint eine neue Funktion zu sein).

Daher bin ich mal ganz blauäugig dran gegangen. Dein Grundproblem ist doch das Einlesen des Wertes aus einem bestimmten Zellenverbund. Deshalb mal ein kleiner Test vorweg.

Erstell eine neue, leere Excel-Datei

- mach aus den Zellen F1:L2 einen Zellverbund
- gib der neuen Verbundzelle danach einen sinnvollen Namen wie z.B. Eingabefeld
- geh in den Editor und teste folgenden Code

PHP:
Sub eingabe()
    Dim test as string
    test = [Eingabefeld]
End Sub

Da liefert er immer sauber einen Wert zurück, egal ob die Zelle leer ist oder nicht.
Ich weiß natürlich nicht, in wie weit das verändern der Originaldatei ein Problem darstellt.
 
nstelle des Range-Objekts die erste Zelle des Zellenverbundes ansprechen.
ActiveSheet.Cells(2, 6).Value.
 
Zurück
Oben