Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

Hilfe gesucht für "Selektiver Datenimport"

Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 14:39:37
Stefan
Hallo zusammen,
nachdem mir insebsondere dieses Forum sehr geholfen hat in den letzten Monaten eine Auftragsvorlage für unsere Audio Produktionen in VBA zu schreiben, stosse ich nun an meine Grenzen.. ;-)
Aufgabenstellung:
In einem Ordner im Netzwerk sammeln sich (automatisch) alle Aufträge (.xls Dateien).
In jedem Auftrag stehen Kundendaten, Preise, etc. (ca. 10 Felder), welche ich in einer neuen Excel Datei, einer Art Auftragsanalyse sammeln möchte.
Der VBA Code in der "Auftragsanalyse" müsste also den Ordner durchsuchen, nachschauen ob neue Aufträge hinzugekommen sind und die entsprechenden Felder eines jeden Auftrages in die Auftragsanalyse fortlaufend schreiben.
Soviel mal dfür den Start, es ist noch komplexer, da die Auftragsanaylse über Tabellenblätter nach Monaten unterteilt ist, aber das läasst sich dann auch noch lösen, da das Auftragsdatum im Filenamen steht...
Ich habe hier schon ein paar Codes gefunden, die in die Richting gehen und ich bin auch sehr lernbereit und wissbegierig, aber in VBA beherrsche ich (zwar immer mehr) nur Grundkenntnisse...
Ich bin für jeden Startansatz dankbar,
liebe Grüße
Stefan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 14:47:11
Klaus
Hi Stefan,
das wird eine Menge Arbeit. Per Google findest du fertigen Code um "VBA alle Dateien im Ordner öffnen" zu realisieren, auch mit Unterordnern usw.
Das ganze dann auch noch mit xl2003 ...
Ich lasse den Beitrag hier natürlich offen, falls sich dem jemand annehmen möchte. Wenn du schnell und sicher eine Lösung brauchst, rate ich dir dieses Anliegen mal hier vorzutragen:
https://www.herber.de/develop.html
Grüße,
Klaus M.vdT.

AW: Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 15:09:17
Rudi
Hallo,
mal ein Rumpfcode
Sub auftraege()
Dim sFile As String, wkb As Workbook, lRow As Long
Const sPfad As String = "c:\temp\"  'anpassen
sFile = Dir(sPfad & "*.xls*")
Do While sFile  ""
If WorksheetFunction.CountIf(Sheets(1).Columns(1), sFile) = 0 Then
'Datei wurde noch nicht importiert
With Sheets(1)
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1) = sFile 'Datei merken
End With
Set wkb = Workbooks.Open(sPfad & sFile)
' hier dein Code um die Daten nach
'Sheets(1).Cells(lRow,Spalte) zu übertragen
wkb.Close False
End If
sFile = Dir
Loop
End Sub

Gruß
Rudi

Anzeige
AW: Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 16:27:34
Stefan
Hi Rudi,
vielen Dank schonmal... Durch Auskommentieren von Teilen kann ich ganz gut nachvollziehen, was da passiert, und auch wenn es momenatn nervt, dass man sieht, wie jedes Excel Sheet einzeln geöffnet und geschlossen wird, so ist das momentan sehr hilfreich, um nachvollziehen zu können, was da passiert...
Ich habe deinen Code in ein Modul kopiert und rufe ihn per Command.Button auf.
Beim Aufrufen kopiert es mir die Filenamen in die "Auftragsanalyse" - von Zeile A2 bis Zeile A10 (9 Aufträge als xls Dateien liegen in dem Ordner)... passt also alles...
Bei
'************************************
' hier dein Code um die Daten nach
'Sheets(1).Cells(lRow,Spalte) zu übertragen
'************************************
bräuchte ich noch Hilfe, wie ich bei geöffnetem Einzelauftrag die gewünschten Zellen anspreche und deren Inhalt in spezifische Zellen der Auftragsanaylse schreibe...
"Sheets(1).Cells(lRow,Spalte)" bezieht sich auf meine Auftragsanalyse, also
"Sheets(1).Cells(lRow,Spalte)= ? "(Rangebezug zum gerade geöffneten Workbook)
Vielen Dank und liebe Grüße
Stefan

Anzeige
AW: Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 16:52:51
Rudi
Hallo,
ich kenn ja deine Auftragsmappen nicht.
Bsp.:
Sub auftraege()
Dim sFile As String, wkb As Workbook, lRow As Long, wksAnalyse As Worksheet
Application.ScreenUpdating = False 'Flackern aus
Const sPfad As String = "c:\temp\"  'anpassen
Set wksAnalyse = ActiveWorkbook.Sheets("Analyse") 'anpassen
sFile = Dir(sPfad & "*.xls*")
Do While sFile  ""
If WorksheetFunction.CountIf(wksAnalyse.Columns(1), sFile) = 0 Then
'Datei wurde noch nicht importiert
With wksAnalyse
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1) = sFile 'Datei merken
End With
Set wkb = Workbooks.Open(sPfad & sFile)
With wkb.Sheets(1)
'Daten aus Auftrag Blatt 1 übertragen
wksAnalyse.Cells(lRow, 2) = .Range("A1")
wksAnalyse.Cells(lRow, 3) = .Range("C3")
wksAnalyse.Cells(lRow, 4) = .Range("D7")
'etc.
End With
wkb.Close False
End If
sFile = Dir
Loop
End Sub

Anzeige
AW: Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 17:05:51
fcs
Hallo Stefan,
hier Rudi's Vorschlag ergänzt um Beispiel für das Übertragen der Daten.
Zusätzlich wird die Bildschirmaktualisierung deaktiviert.
Wenn du die Daten wirklich monatsweise auf Blätter verteilen willst, dann müßte die Zieltabelle noch aus dem im Dateinamen enthaltenen Datum ermittelt werden. Davon rate ich aber ab.
Ich würde alle Auftragsdaten in einem Blatt für die Analyse zusammenstellen und dann per Pivottabellenbericht Auswertungen für die Monate machen.
Gruß
Franz
Sub auftraege()
Dim sFile As String, wkb As Workbook, lRow As Long, wksQuelle As Worksheet
Dim wbkAktiv As Workbook, wksZiel As Worksheet
Const sPfad As String = "c:\temp\"  'anpassen
Set wbkAktiv = ActiveWorkbook
sFile = Dir(sPfad & "*.xls*")
Application.ScreenUpdating = False
Do While sFile  ""
Set wksZiel = wbkAktiv.Worksheets("Auftragsanalyse") 'Blattname anpassen!
If WorksheetFunction.CountIf(wksZiel.Columns(1), sFile) = 0 Then
'Datei wurde noch nicht importiert
With wksZiel
lRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1) = sFile 'Datei merken
End With
Set wkb = Workbooks.Open(sPfad & sFile)
' hier dein Code um die Daten nach
'Sheets(1).Cells(lRow,Spalte) zu übertragen
Set wksQuelle = wbk.Worksheets(1)
wksZiel.Cells(lRow, 2).Value = wksQuelle.Range("B2").Value
wksZiel.Cells(lRow, 3).Value = wksQuelle.Cells(2, 3).Value
Set wksQuelle = nthing
wkb.Close False
End If
sFile = Dir
Loop
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Hilfe gesucht für "Selektiver Datenimport"
12.06.2013 17:26:24
Stefan
Wow... an alle erstmal vielen Dank... im Ansatz funktionieren meine ersten Tests schon ganz gut, der Rest ist jetzt Formatierungssache und die richtige Verteilung der Daten auf die Monate...
Pivottabellen Verteilung auf andere Tabellenblätter schau ich mir mal an, guter Tipp...
Daten müssen zudem ja noch nach Auftragsart (Auch im Filenamen hinterlegt) sortiert werden... ;-)
Vielen Dank schonmal, bitt enoch nicht schliessen, ich melde mich die TAge mit einer Rückmeldung..
Liebe Grüße
Stefan

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige