Den Wert eines Speichers mit einer Spalte einer anderen Excelmappe vergleichen
Hallo!
Folgendes Problem:
Betätige ich in meinem Visualisierungsprogramm (iFix), welches mit VBA programmiert ist, einen Button, wird eine TCP/IP-Socket verbindung aufgebaut und ein Wert in ein dataBuf (String) geschrieben. Das Funktioniert.
Jetzt soll der Wert im dataBuf mit der Spalte A einer Excelmappe verglichen werden. Diese liegt auf dem selben Rechner wie das Visualisierungsprogramm.
Die Excelmappe lässt sich öffnen:
Dim strDateiname As String
strDateiname = "C:\Dokumente und Einstellungen\Schule\Desktop\Anpreßwalzenauswertung_Kartei.xls"
Dim Excel As Object
Set Excel = CreateObject("Excel.Application")
If Excel Is Nothing Then
MsgBox "Konnte keine Verbindung zu Excel herstellen!", 16, "Problem"
Exit Sub
End If
With Excel
.Visible = True
.Workbooks.Open strDateiname
End With
Exit Sub
Exit_Konten_Click:
Exit Sub
Err_Konten_Click:
MsgBox Err.Description
Resume Exit_Konten_Click
Wie vergleiche ich nun den Wert im dataBuf mit der Spalte A der Excelmappe?
Danke und Grüße
Folgendes Problem:
Betätige ich in meinem Visualisierungsprogramm (iFix), welches mit VBA programmiert ist, einen Button, wird eine TCP/IP-Socket verbindung aufgebaut und ein Wert in ein dataBuf (String) geschrieben. Das Funktioniert.
Jetzt soll der Wert im dataBuf mit der Spalte A einer Excelmappe verglichen werden. Diese liegt auf dem selben Rechner wie das Visualisierungsprogramm.
Die Excelmappe lässt sich öffnen:
Dim strDateiname As String
strDateiname = "C:\Dokumente und Einstellungen\Schule\Desktop\Anpreßwalzenauswertung_Kartei.xls"
Dim Excel As Object
Set Excel = CreateObject("Excel.Application")
If Excel Is Nothing Then
MsgBox "Konnte keine Verbindung zu Excel herstellen!", 16, "Problem"
Exit Sub
End If
With Excel
.Visible = True
.Workbooks.Open strDateiname
End With
Exit Sub
Exit_Konten_Click:
Exit Sub
Err_Konten_Click:
MsgBox Err.Description
Resume Exit_Konten_Click
Wie vergleiche ich nun den Wert im dataBuf mit der Spalte A der Excelmappe?
Danke und Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 239177
Url: https://administrator.de/forum/den-wert-eines-speichers-mit-einer-spalte-einer-anderen-excelmappe-vergleichen-239177.html
Ausgedruckt am: 21.05.2025 um 12:05 Uhr
6 Kommentare
Neuester Kommentar

Hallo Tobias1900!
Das kommt darauf an:
- Befindet sich die Zelle im ersten Tabellenblatt oder muss eine bestimmte Tabelle angesprochen werden?
- Soll der gesamte Inhalt mit/ohne Klein/Groß-Unterscheidung oder nur ein Teil des Inhalts verglichen werden?
Ansonsten frage ich mich, wieso Du ein Excel-Object mit 'Visible=True' erzeugst, wenn Du eh schon Excel ausführst?
Grüße Dieter
Das kommt darauf an:
- Befindet sich die Zelle im ersten Tabellenblatt oder muss eine bestimmte Tabelle angesprochen werden?
- Soll der gesamte Inhalt mit/ohne Klein/Groß-Unterscheidung oder nur ein Teil des Inhalts verglichen werden?
Ansonsten frage ich mich, wieso Du ein Excel-Object mit 'Visible=True' erzeugst, wenn Du eh schon Excel ausführst?
Grüße Dieter
Hallo Tobias1900, Willkommen auf Administrator.de!
Da du uns etwas wenig Informationen lieferst um welchen Datentyp es sich mit deiner Variablen dataBuf() handelt können wir nur spekulieren, vermutlich ein Array aus Strings. Wenn es nur darum geht um zu vergleichen ob der Inhalt des Arrays identisch mit der gleichen Anzahl an Zellen in Spalte A des Worksheets ist(gleiche Reihenfolge), kannst du es ungetestet etwa so machen (ich gehe mal davon aus das du deinen Code aus einer anderen Anwendung ausführst als Excel, da du ja ein Excel-Objekt erzeugst):
Im jetztigen Zustand wird zwischen Groß und Kleinschreibung unterschieden. Wenn das nicht gewollt ist Zeile 29 so abzuändern:
Viel Erfolg
Grüße Uwe
Da du uns etwas wenig Informationen lieferst um welchen Datentyp es sich mit deiner Variablen dataBuf() handelt können wir nur spekulieren, vermutlich ein Array aus Strings. Wenn es nur darum geht um zu vergleichen ob der Inhalt des Arrays identisch mit der gleichen Anzahl an Zellen in Spalte A des Worksheets ist(gleiche Reihenfolge), kannst du es ungetestet etwa so machen (ich gehe mal davon aus das du deinen Code aus einer anderen Anwendung ausführst als Excel, da du ja ein Excel-Objekt erzeugst):
Sub DeineSub()
Dim strDateiname As String, Excel As Object, wb As Object, ws As Object, arr As Variant, identical As Boolean
strDateiname = "C:\Dokumente und Einstellungen\Schule\Desktop\Anpreßwalzenauswertung_Kartei.xls"
Set Excel = CreateObject("Excel.Application")
' Der Variablen noch dein 'dataBuf()' Array zuweisen
arr = dataBuf
identical = True
'eventuelle Dialoge unterdrücken
Excel.DisplayAlerts = False
If Excel Is Nothing Then
MsgBox "Konnte keine Verbindung zu Excel herstellen!", 16, "Problem"
Exit Sub
End If
With Excel
'Sichtbar ausführen
.Visible = True
'Workbook öffnen
Set wb = .Workbooks.Open(strDateiname)
'Tabelle festlegen
Set ws = wb.Worksheets(1)
'Vergleiche Array mit Zellen in Spalte A
If IsArray(arr) Then
For i = 0 To UBound(arr)
'Wenn Wert des Arrayelementes nicht mit dem Inhalt der Zelle übereinstimmt, gebe 'False' zurück
If ws.Cells(i + 1, 1).Value <> arr(i) Then
identical = False
Exit For
End If
Next
If identical Then
'Array ist identisch mit Inhalt
MsgBox "Inhalt ist identisch mit Spalte A", vbInformation
Else
'Array ist unterschiedlich
MsgBox "Inhalt ist unterschiedlich zu Spalte A", vbExclamation
End If
Else 'Inputvariable ist kein Array
MsgBox "Variable ist kein Array", vbExclamation
End If
End With
Excel.DisplayAlerts = True
Excel.Quit
Set Excel = Nothing
Set wb = Nothing
Set ws = Nothing
End Sub
If LCase(ws.Cells(i + 1, 1).Value) <> LCase(arr(i)) Then
Viel Erfolg
Grüße Uwe

Hallo Tobias!
Dann in etwa so:
Grüße Dieter
Dann in etwa so:
Private Const ExcelFile = "C:\Dokumente und Einstellungen\Schule\Desktop\Anpreßwalzenauswertung_Kartei.xls"
Private Const xlWhole = 1 'Vergleiche ganzen Inhalt
Private Const xlPart = 2 'Vergleiche Teil-Inhalt
Private Const xlValues = -4163 'Suche in Zellwerten
Private Const vbCritical = 16
Private Const vbExclamation = 48
Private Const vbInformation = 64
Sub Test()
Call ExcelSearch("Testabc")
End Sub
Sub ExcelSearch(ByVal strSearch As String)
Dim objExcel As Object, objWkb As Object, objWks As Object, objFound As Object
On Error Resume Next
Set objExcel = CreateObject("Excel.Application")
Set objWkb = objExcel.Workbooks.Open(ExcelFile)
Set objWks = objWkb.Sheets(1)
If objExcel Is Nothing Then
MsgBox "Konnte keine Verbindung zu Excel herstellen!", vbCritical, "Problem"
ElseIf objWkb Is Nothing Then
MsgBox "Excel-Datei konnte nicht geöffnet werden!", vbCritical, "Problem"
Else
'Args: Suchstring, , in Zellwerten suchen, Vergleich teil (xlPart) / ganzer(xlWhole) Inhalt
Set objFound = objWks.Range("A:A").Find(strSearch, , xlValues, xlWhole)
If objFound Is Nothing Then
MsgBox strSearch & ": Nicht gefunden!", vbInformation, "Hinweis"
Else
MsgBox strSearch & ": In Zeile " & objFound.Row & " gefunden!", vbInformation, "Hinweis"
End If
objWkb.Close False
End If
If IsObject(objExcel) Then objExcel.Quit
On Error GoTo 0
End Sub
Grüße Dieter

Hallo Tobias!

Dann bitte den Thread noch als gelöst markieren, Danke
Grüße Dieter
Hat funktioniert! Super Forum super Hilfe!
Freut mich zu hörenDann bitte den Thread noch als gelöst markieren, Danke
Grüße Dieter