Excel-Tabelle per Script nur bestimmte Spalten auswählen
Guten Tag erstmal,
Wolte zuerst mal anmerken das ich gesehen habe das es schon ähnliche Probleme gegeben hat aber komme damit nicht weiter!!
Zum Problem:
Bekomme aus einem Programm eine dbf-Datei die folgender Maßen aufgebaut ist:
Aus dieser Tabelle sollen nur bestimmte Spalten in eine neue xls-Datei kopiert werden die folgender Maßen aufgebaut sein muss
Also sprich:
EDIT: xls.Hdl.-Nr kommt der wert XXXXX
dbf.ANREDE in xls.Anrede
xls.Titel bleibt leer
dbf.VORNAME in xls.Vorname
dbf.NACHNAME in xls.Name
EDIT: xls.Firma 1 bleibt leer
xls.Firma 2 bleibt leer
dbf.STRASSE in xls.STraße
dbf.PLZ in xls.PLZ
dbf.ORT in xls.Ort
dbf.TELPRIVAT in xls.Telefonnr.
dbf.FAHRGEST_N in xls.VIN
Der Aufbau der beiden Dateien ist immer gleich!
Denke das dies mit VB zu realisieren ist da ich davon keinen Peil habe bitte ich um eure Hilfe
Danke schonmal im Vorraus!!
MfG Markus
Wolte zuerst mal anmerken das ich gesehen habe das es schon ähnliche Probleme gegeben hat aber komme damit nicht weiter!!
Zum Problem:
Bekomme aus einem Programm eine dbf-Datei die folgender Maßen aufgebaut ist:
Aus dieser Tabelle sollen nur bestimmte Spalten in eine neue xls-Datei kopiert werden die folgender Maßen aufgebaut sein muss
Also sprich:
EDIT: xls.Hdl.-Nr kommt der wert XXXXX
dbf.ANREDE in xls.Anrede
xls.Titel bleibt leer
dbf.VORNAME in xls.Vorname
dbf.NACHNAME in xls.Name
EDIT: xls.Firma 1 bleibt leer
xls.Firma 2 bleibt leer
dbf.STRASSE in xls.STraße
dbf.PLZ in xls.PLZ
dbf.ORT in xls.Ort
dbf.TELPRIVAT in xls.Telefonnr.
dbf.FAHRGEST_N in xls.VIN
Der Aufbau der beiden Dateien ist immer gleich!
Denke das dies mit VB zu realisieren ist da ich davon keinen Peil habe bitte ich um eure Hilfe
Danke schonmal im Vorraus!!
MfG Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 159571
Url: https://administrator.de/contentid/159571
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Markus,
das kannst du sogar (fast alles) mit dem Makro-Rekorder machen.
dbf Öffnen.
Makro aufzeichen
Alle Spalten, auch die leeren, die du willst markieren
Datei > neu > A1 auswählen > einfügen
Bei den Spalten die leer bleiben sollen die Daten löschen
und in die Zeile mit dem gleichen Wert (xls.Firma1) den Wert eintragen
auf den kleinen schwarzen umrandeten Balken Doppelclicken und die Werte werden gefüllt.
Makro aufzeichnen beenden
Damit hast du schon mal dein Grundgerüst. Für die Statischen Werte kannst du evtl. auch mit Cells.Offset arbeiten (solange links was steht, den Wert eintragen)
Gruß
Netzheimer
das kannst du sogar (fast alles) mit dem Makro-Rekorder machen.
dbf Öffnen.
Makro aufzeichen
Alle Spalten, auch die leeren, die du willst markieren
Datei > neu > A1 auswählen > einfügen
Bei den Spalten die leer bleiben sollen die Daten löschen
und in die Zeile mit dem gleichen Wert (xls.Firma1) den Wert eintragen
auf den kleinen schwarzen umrandeten Balken Doppelclicken und die Werte werden gefüllt.
Makro aufzeichnen beenden
Damit hast du schon mal dein Grundgerüst. Für die Statischen Werte kannst du evtl. auch mit Cells.Offset arbeiten (solange links was steht, den Wert eintragen)
Gruß
Netzheimer
Hallo MarkusMohr!
Das könnte als VBA etwa so aussehen:
Grüße
bastla
Das könnte als VBA etwa so aussehen:
Sub Konvertieren()
Zuordnung = Array("XXXXX", "_B", "", "_D", "_E", "", "", "_G", "_H", "_I", "_K", "_L")
Quelle = "Tabelle1"
QAbZeile = 2
QAbSpalte = 1 'Quelldaten ab Spalte A
Ziel = "Tabelle2"
ZielUeber = Array("Hdl.-Nr*", "Anrede", "Titel", "Vorname*", "Name*", "Firma 1**", "Firma 2*", "Straße*", "PLZ*", "Ort*", "Telefonnr.", "VIN*")
ZAbZeile = 2
ZAbSpalte = 1 'Zieldaten ab Spalte A
Feldanzahl = UBound(ZielUeber) + 1
QZeile = QAbZeile
ZZeile = ZAbZeile - 1
For i = 0 To Feldanzahl - 1
Worksheets(Ziel).Cells(ZZeile, ZAbSpalte + i) = ZielUeber(i)
Next
ZZeile = ZZeile + 1
Do While Worksheets(Quelle).Cells(QZeile, QAbSpalte) <> ""
For i = 0 To Feldanzahl - 1
If Left(Zuordnung(i), 1) = "_" Then
Worksheets(Ziel).Cells(ZZeile, ZAbSpalte + i) = Worksheets(Quelle).Cells(QZeile, Mid(Zuordnung(i), 2))
Else
Worksheets(Ziel).Cells(ZZeile, ZAbSpalte + i) = Zuordnung(i)
End If
Next
QZeile = QZeile + 1
ZZeile = ZZeile + 1
Loop
End Sub
bastla