Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1024to1028
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zum Befüllen von Spalten aus einer 2. Datei

Makro zum Befüllen von Spalten aus einer 2. Datei
18.11.2008 09:39:00
Spalten
Hallo zusammen,
wurde leider wieder von eine Aufgabe gestellt, die meine beschränkten Makro Fähigkeiten ziemlich ausreizt.
Ich habe eine ziemlich große xls Datei (>100 Spalten), die für den Export in mehrere txt.Dateien für eine Fremdsoftware Schnittstelle benötigt wird.
Nun wurde die Anforderung gestellt, ich solle eine kleine übersichtliche Datei erstellen mit aktuell knapp 40 Spalten die übersichtlich und "einfach befüllbar" für Kunden und User ist. Soweit kein Problem ...
Nur aus dieser 2. Datei sollen jetzt per Makro alle Spalten in die Datei 1 übernommen werden, aber natürlich is erstens die Quelldatei (-name) variabel und zweitens stimmt die Reihenfolge der Spalten in beiden Sheets nicht überein.
Mein Lösungsansatz wäre nun, daß der Bereich der Datei 2 in ein Array übernommen wird und von dort Spalte für Spalte per Schleife in die jeweils richtigen Datei1.Spalten geschrieben wird.
also der Makro Kopf etwa so:

Sub LieDaten_Import()
Dim LieBlattPfad As String
Dim LieBlatt As Worksheet
Dim Inhalt() As String
Dim zeilen As Integer
LieBlattPfad = InputBox("Wo liegt die Lieferantendatei? zB:'C:\Daten\lieferant.xls'", "Dateien-  _
_
_
Pfad")
If LieBlattPfad = "" Then Exit Sub
Set LieBlatt = Workbooks.Open(LieBlattPfad).Sheets("Tabelle1")
zeilen = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Inhalt = LieBlatt.Range("A3:AM" & zeilen)
End Sub


und dann halt 40 for-Schleifen die Datei 2 befüllen.
Meine Frage nun, ist dies der einfachste/eleganteste Weg oder hätte jemand eine Idee wie ich mir die 40 Schleifen etwas vereinfache, bzw. einen generell anderen Lösungsweg ?

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Befüllen von Spalten aus einer 2. Datei
18.11.2008 11:19:00
Spalten
Hallo Max,
ich ein ähnliches Problem folgendermaßen gelöst.
Ich mußte aus einer variablen Tabelle Werte aus bestimmten Spalten auslesen. Da ich zwar wußte wie die Spaltentitel heissen, aber nicht in welcher Spalte sie stehen, habe ich zunächst in der Empfängertabelle die erste Zeile mit den Spaltentiteln markiert und in einer FOR EACH Schleife die Spaltentitel ausgelesen. Diese dann in einer Select Case Schleife auf den bekannten Namen überprüft und einer Variablen (verkürzter Spaltentitel und "_sp" angehängt) die Spaltennummer übergeben.
In der abgebenden Tabelle eine gleiche FOR EACH Schleife angelegt und in der SELECT CASE Schleife (aus der Select Case Schleife der Empängertabelle übernommen) auf die Spaltentitel überprüft, und hier statt der Spaltennummer den Datenbereich der Spalte markiert und unter Verwendung der dazu passenden Spaltennummer der Empängertabelle in die Spalte der Empfängertabelle kopiert.
Tab1.activate
Range("A1:A40")
For Each i in selection
SpName = i.value
select case spName
case "test1"
t1_sp = i.Column
case "Test2"
t2_sp = i.column
usw
end select
next
tab2.activate
Range("A1:A60")
For Each i 0n selection
SpName = i.value
select case spName
case "test1"
datenbereich der Spalte markieren und copieren
tab1.range(cells(2,t1_sp),cells(2,t1_sp)..... paste
case "Test2"
....
usw
end select
next
Dies ist nur eine schnelle Gedankenhilfe.
MfG. Klaus
Anzeige
AW: Makro zum Befüllen von Spalten aus einer 2. Datei
21.11.2008 10:36:10
Spalten
Danke für deine Hilfe.
Hab zuerst den Inhalt mit 39 for schleifen befüllt. Nachdem ich dann fertig war, hab ich kurz den Code durchdacht und mich anschließend ziemlich geärgert.
Letztendlich sieht mein Ergebnis so aus, falls mal jemand was ähnliches benötigt. Hab mir einfach ne Hilfstabelle gemacht fürs Mapping, was zukünftige Änderungen der Spaltenreihenfolge, etc. erheblich erleichtert.
Zwar nicht der sauberste Code und sicherlich weit von dem eines VBA Experten entfernt, aber er funktioniert für meine Zwecke:

Sub LieDaten_Import()
Dim LieBlattPfad As String
Dim check As Long
Dim LieBlatt As Worksheet
Dim Inhalt() As Variant
Dim Mapping() As Variant
Dim zeilen As Integer
Dim strTest As String
Dim tmp As String
On Error Resume Next
LieBlattPfad = InputBox("Wo liegt die Lieferantendatei? zB:'C:\Daten\lieferant.xls' Vorhandene  _
Inhalte werden üebrschrieben !!!", "Dateien-Pfad")
If LieBlattPfad = "" Then Exit Sub
check = GetAttr(LieBlattPfad)
If Not (Err = 0) Then
MsgBox "Der Pfad ist ungültig!", vbCritical
End If
Set LieBlatt = Workbooks.Open(LieBlattPfad).Sheets("Tabelle1")
LieBlatt.Activate
zeilen = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Inhalt = LieBlatt.Range("A3:AM" & zeilen)
ActiveWorkbook.Close
MsgBox ("Anzahl Zeilen:" & (zeilen - 2) & " werden importiert.")
Mapping = Sheets("mapping").Range("A2:B61").Value
ThisWorkbook.Sheets(1).Activate
For x = 1 To UBound(Mapping)
tmpZiel = Mapping(x, 1)
tmpQuelle = Mapping(x, 2)
Select Case Mapping(x, 2)                         'Sonderfälle in Mappingtabelle definieren'
Case ("")                                         'leere Felder aus Spalte 2 werden ignoriert'
Case ("datum")                                    'Datum von morgen autom. einfügen'
For y = 1 To (zeilen - 2)
Cells((y + 3), tmpZiel) = Format(Now() + 1, "YYYYMMDD")
Cells((y + 3), tmpZiel) = Format(Now() + 1, "YYYYMMDD")
Next y
Case ("Kombi AT")                       'mehrere Quell-Felder in ein Zielfeld-!!!---QUELLFELDER  _
WERDEN NICHT GEMAPPED---!!!'
For y = 1 To (zeilen - 2)
Cells((y + 3), tmpZiel) = "ARA: " & Inhalt(y, 20) & ", ERA: " & Inhalt(y, 21) & ", " &  _
Inhalt(y, 6)
Next y
Case Else
For y = 1 To (zeilen - 2)                      '-2 um Überschrift aus Quelldatei zu berü _
cksichtigen'
Cells((y + 3), tmpZiel) = Inhalt(y, tmpQuelle) '+3 um Überschrift in Ziel zu berü _
cksichtigen'
Next y
End Select
tmpZiel = ""
tmpQuelle = ""
Next x
End Sub


Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige