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-Key: 159571

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

Printed on: April 18, 2024 at 09:04 o'clock

Member: Netzheimer
Netzheimer Jan 27, 2011 at 14:10:30 (UTC)
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
Member: MarkusMohr
MarkusMohr Jan 27, 2011 at 16:00:44 (UTC)
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!
Member: bastla
bastla Jan 28, 2011 at 17:00:31 (UTC)
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