VBS - Daten aus EXCEL auslesen

rtd1978

Mitglied
Hallo, ich könnte mal die Hilfe der VBS Community gebrauchen.

Ich habe hier 2 fast identische Excel Dateien.

Aufgabenstellung ist nun ein VBS Script zu schreiben, was mir die Daten ausliest, die Daten vergleicht und leere Stellen der ersten Datei mit dem Inhalt der gleichen Stelle der zweiten Datei beschreibt.

Grundlegendes Problem ist, dass ich zwar programmieren kann, aber leider fast keine VBS Kenntnisse habe.

Ein erster Schritt zur Lösung meines Problemes wäre, mir den korrekten Syntax zu nennnen, mit dem ich aus einem Excelsheet den Inhalt von Zellen auslesen kann und in eine andere Datei schreiben kann (Oder noch lieber in eine Variable, auf die ich zugreifen kann).

Danke für Hilfe,

René
 
Hi rtd,

Öffne mal die erste Datei, und kopiere unten stehenden Code in ein Modul. Dann hast Du ein Makro "WorkWithTwoFiles", das Du ausführen kannst. Dieses Makro prüft in Spalte A der gerade geöffneten ersten Datei, ob ein Wert eingetragen ist. Wenn nein, wird der entsprechende Wert aus Datei2 in diese Zelle übertragen.

Code:
Option Explicit

Public Sub WorkWithTwoFiles()
    Dim nCounter                As Integer  ' Schleifenzähler
    Dim oWorkbook1              As Workbook ' Objekt auf erste Datei
    Dim oWorkbook2              As Workbook ' Objekt auf zweite Datei
    Dim szValue                 As String   ' Variable, die den Inhalt von Zellen aufnimmt


    Rem =======================================================================
    Rem == Aktive Datei der ersten Objektvariablen zuordnen.                 ==
    Rem =======================================================================
    Set oWorkbook1 = Workbooks(1)

    Rem =======================================================================
    Rem == Zweite Datei öffnen und Objektvariablen zuordnen.                 ==
    Rem =======================================================================
    Set oWorkbook2 = Application.Workbooks.Open("D:\Temp\Mappe2.xls")

    Rem =======================================================================
    Rem == n Zellen in einer Spalte untersuchen.                             ==
    Rem =======================================================================
    For nCounter = 1 To 20
        If oWorkbook1.Sheets(1).Cells(nCounter, 1).Value = "" Then
            szValue = oWorkbook2.Sheets("Tabelle1").Cells(nCounter, 1).Value
            oWorkbook1.Sheets("Tabelle1").Cells(nCounter, 1).Value = szValue
        End If
    Next nCounter

    Rem =======================================================================
    Rem == Zweite Datei wieder schliesen.                                    ==
    Rem =======================================================================
    oWorkbook2.Close

    Rem =======================================================================
    Rem == Objektverweis wieder entfernen.                                   ==
    Rem =======================================================================
    Set oWorkbook1 = Nothing
    Set oWorkbook2 = Nothing
End Sub

Hope it helpf
Das Orakel
 
ok, das funktioniert wunderbar.

nur soll das tool von mehreren leuten angewandt werden. deshalb ist das einfügen von makros vielleicht ein bisschen umständlich.

ich versuche das ganze mal von einer externen datei ausführen zu lassen.
für weitere tipps diesbezüglich wäre ich sehr dankbar. :)


gruß, René
 
wie gesagt, ich kenn mich in vbs nicht so aus.

wieso bekomm ich bei dem oben gezeigten code (gespeichert in einer .vbs) bei ausführung immer diese fehlermeldung:

"Anweisungsende erwartet Zeile 4, Zeichen 33" - also nach "Dim nCounter" und
vor "As Integer". obwohl dieser ausdruck doch eine einheit darstellt?
 
Ganz einfach, weil VBS nicht VBA ist.

Hier de VBS Code

Code:
Rem =======================================================================
Rem == Initialisiere Excel Objekt.                                       ==
Rem =======================================================================
Set oExcel = CreateObject("Excel.application")

Rem =======================================================================
Rem == Aktive Datei der ersten Objektvariablen zuordnen.                 ==
Rem =======================================================================
Set oWorkbook1 = oExcel.Workbooks.Open("D:\Temp\Mappe1.xls")

Rem =======================================================================
Rem == Zweite Datei öffnen und Objektvariablen zuordnen.                 ==
Rem =======================================================================
Set oWorkbook2 = oExcel.Workbooks.Open("D:\Temp\Mappe2.xls")

Rem =======================================================================
Rem == n Zellen in einer Spalte untersuchen.                             ==
Rem =======================================================================
For nCounter = 1 To 20
    If oWorkbook1.Sheets(1).Cells(nCounter, 1).Value = "" Then
        szValue = oWorkbook2.Sheets("Tabelle1").Cells(nCounter, 1).Value
        oWorkbook1.Sheets("Tabelle1").Cells(nCounter, 1).Value = szValue
    End If
Next

Rem =======================================================================
Rem == Zweite Datei wieder schliesen.                                    ==
Rem =======================================================================
oWorkbook2.Close
oWorkbook1.Save
oWorkbook1.Close

Rem =======================================================================
Rem == Objektverweis wieder entfernen.                                   ==
Rem =======================================================================
Set oWorkbook1 = Nothing
Set oWorkbook2 = Nothing
oExcel.Quit

Gruß
Das Orakel
 
ah ja. hab grad bissl gegoogled. dim...as gehört also nicht in vbs.

der code ist einwandfrei. werd ihn morgen auf meine bedürfnisse zurechtschustern.

vielen dank an dich, gruß, René
 
so, hab das script jetzt auf meine bedürfnisse zurechtgeschrieben. allerdings funktioniert es nicht.

Code:
Rem =======================================================================
Rem == Initialisiere Excel Objekt.                                       ==
Rem =======================================================================
Set oExcel = CreateObject("Excel.application")

Rem =======================================================================
Rem == Aktive Datei der ersten Objektvariablen zuordnen.                 ==
Rem =======================================================================
Set oWorkbook1 = oExcel.Workbooks.Open("C:\Dokumente und Einstellungen\res.TLAN\Eigene Dateien\VB\Scripte\ziel.xls")

Rem =======================================================================
Rem == Zweite Datei öffnen und Objektvariablen zuordnen.                 ==
Rem =======================================================================
Set oWorkbook2 = oExcel.Workbooks.Open("C:\Dokumente und Einstellungen\res.TLAN\Eigene Dateien\VB\Scripte\quelle.xls")

Rem =======================================================================
Rem == n Zellen in n Spalten untersuchen.                                ==
Rem =======================================================================

For xCount = 1 To 50                      							'Spalte
    	For iCount = 1 To 50             							'Zeile
                  syn_id = oWorkbook1.Sheets("Tabelle1").Cells(iCount, 1).Value
                  If oWorkbook1.Sheets("Tabelle1").Cells(iCount, xCount).Value = "" Then
                         For yCount = 1 To 50
	         		If(oWorkbook2.Sheets("Tabelle1").Cells(yCount, 1).Value = syn_id) Then
	                 		zeiledatei = yCount
	         		End If
			Next
                         zwischen = oWorkbook2.Sheets("Tabelle1").Cells(zeiledatei, xCount).Value
                         oWorkbook1.Sheets("Tabelle1").Cells(iCount, xCount).Value = zwischen
	         End If
	Next
Next

Rem =======================================================================
Rem == Zweite Datei wieder schliessen.                                   ==
Rem =======================================================================
oWorkbook2.Close
oWorkbook1.Save
oWorkbook1.Close

Rem =======================================================================
Rem == Objektverweis wieder entfernen.                                   ==
Rem =======================================================================
Set oWorkbook1 = Nothing
Set oWorkbook2 = Nothing
variable = MsgBox("Well done, Commander !",vbOKOnly,"Meldung")
oExcel.Quit

eine idee woran es liegen könnte?
 
Zuletzt bearbeitet:
Hi,

hmmm Ideen ohne Ende. Wenn das Script Primzahlen ermitteln sollte, hätte ich das Problem sofort eingegrenzt.

Was funktioniert den nicht?

Mir fällt nur auf, dass Du Deine Suche und der Vergleich immer in Spalte 1 stattfindet.


Gruß
Das Orakel
 
was genau nicht funktioniert weiss ich nicht. das script läuft einfach endlos. ohne fehlermeldung.

zur eigentlichen funktion. ich habe 2 excel-dateien. diese enthalten fehlernummern(spalte1) bemerkungen(spalte2), lösungen(spalte3), usw.

die erste datei enthält leerfelder in der spalte "lösungen" und wird weggeschickt. der bearbeiter füllt ein paar felder "lösungen" aus und schickt sie zurück. in der ersten datei wurde zwischenzeitlich auch geschrieben.
nun soll die 1. datei mit der 2. geupdatet werden. bedeutet, überall, wo in datei 1 leerfelder sind, soll der inhalt dieses leerfeldes von der 2. datei rein. das ganze aber bezogen auf die fehlernummer(spalte1)- deswegen immer spalte1.

ist das einigermaßen vertändlich oder muss ich noch was ergänzen? :) .
 
ok, habe gerade herausgefunden, dass es nicht endlos läuft. habe xcount mal auf 3 gesetzt. jetzt läuft es in 30 sekunden durch. allerdings ohne funktion. der austausch der daten funktioniert nicht. :(
 

Neue Beiträge

Zurück