markusmohr
Goto Top

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:

c3d629d7834cc7c09062dfeb1c1c47c9

Aus dieser Tabelle sollen nur bestimmte Spalten in eine neue xls-Datei kopiert werden die folgender Maßen aufgebaut sein muss
0f1a0ed960478707afc3b0cb4d5f600a

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

Content-ID: 159571

Url: https://administrator.de/contentid/159571

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Netzheimer
Netzheimer 27.01.2011 um 15:10:30 Uhr
Goto Top
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
MarkusMohr
MarkusMohr 27.01.2011 um 17:00:44 Uhr
Goto Top
Ersteinmal Danke für deine Antwort!

Hab das mal kurz ausprobiert aber ist überhauot nicht mein Ding!
Denke das ich bevor ich diesen Rekorder benutze mich nach und nach in VB einarbeite ist schon irgendwie schöner face-wink

Aber trotzdem Danke!
bastla
bastla 28.01.2011 um 18:00:31 Uhr
Goto Top
Hallo MarkusMohr!

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
Grüße
bastla